Split the _00E_Game_SkillmenuSC alias into three separate quests, removed the Hero Menu hotkey setting

This commit is contained in:
Eddoursul 2023-12-18 14:06:04 +01:00
parent 4e2e2166c6
commit d4cda7ea92
21 changed files with 310 additions and 432 deletions

BIN
Separate affinity quest.esp Normal file

Binary file not shown.

BIN
Separate hero menu.esp Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,24 +4,23 @@ Scriptname _00E_EnderalMCM extends SKI_ConfigBase
; EVENTS
;=====================================================================================
int function _GetScriptVersion() Global
return 1
endFunction
Event OnPageReset(string page)
If _00E_ConfigMenu_Meditate == None
_00E_ConfigMenu_Meditate = Game.GetFormFromFile(0x00046D98, "Skyrim.esm") as Message
EndIf
If _00E_FS_IsForgottenStoriesActivated == None
_00E_FS_IsForgottenStoriesActivated = Game.GetFormFromFile(0x0004320E, "Skyrim.esm") as GlobalVariable
EndIf
; adding options to rebind new key options: 1) Hero menu 2) meditation 3) Phasmalist summon apparition 4) Horseflute
SetCursorFillMode(TOP_TO_BOTTOM)
AddHeaderOption(_00E_ConfigMenu_Keybindings.GetName())
iKeyID = self.AddKeyMapOption(_00E_ConfigMenu_OpenHeroMenu.GetName(), iHeroMenuKeymap, 0)
iKeyMeditateID = self.AddKeyMapOption(_00E_ConfigMenu_Meditate.GetName(), Player.iMeditateKeycode, 0)
If _00E_FS_IsForgottenStoriesActivated.GetValueInt() == 1
iKeyID02 = self.AddKeyMapOption(_00E_FS_ConfigMenu_Phasmalist_Teleport.GetName(), iFSPhasmalistTeleportKeymap, 0)
iKeyMountID = self.AddKeyMapOption(_00E_FS_ConfigMenu_Mount_Teleport.GetName(), iFSMountTeleportKeymap, 0)
EndIf
SetCursorFillMode(TOP_TO_BOTTOM)
AddHeaderOption(_00E_ConfigMenu_Keybindings.GetName())
iKeyMeditateID = self.AddKeyMapOption(_00E_ConfigMenu_Meditate.GetName(), PlayerMeditation.iMeditateKeycode, 0)
iKeyID02 = self.AddKeyMapOption(_00E_FS_ConfigMenu_Phasmalist_Teleport.GetName(), iFSPhasmalistTeleportKeymap, 0)
iKeyMountID = self.AddKeyMapOption(_00E_FS_ConfigMenu_Mount_Teleport.GetName(), iFSMountTeleportKeymap, 0)
; adding gameplay options to enable / disable: 1) read aloud books 2) videos skip
AddHeaderOption(_00E_ConfigMenu_GameplayOptions.GetName())
@ -43,16 +42,10 @@ EndEvent
; this event is responsible for assigning new keys, and passes the information to the respecitive scripts that registers for the key
Event OnOptionKeyMapChange(int option, int keyCode, string conflictControl, string conflictName)
If option == iKeyID
iHeroMenuKeymap = keyCode
self.SetKeyMapOptionValue(iKeyID, iHeroMenuKeymap, false)
Player.SetHeroMenuKey(iHeroMenuKeymap)
ElseIf option == iKeyMeditateID
If option == iKeyMeditateID
self.SetKeyMapOptionValue(iKeyMeditateID, keyCode, false)
Player.SetMeditateKey(keyCode)
PlayerMeditation.SetMeditateKey(keyCode)
ElseIf option == iKeyID02
@ -94,9 +87,7 @@ EndEvent
; the information is located in the Language_Translate.txt
Event OnOptionHighlight(int option)
If option == iKeyID
SetInfoText("$ConfigMenuKeyInfo")
ElseIf option == iKeyMeditateID
If option == iKeyMeditateID
SetInfoText("$ConfigMenuKeyInfo")
ElseIf option == iKeyID02
SetInfoText("$ConfigMenuKeyInfo")
@ -135,14 +126,10 @@ EndFunction
; PROPERTIES
;=====================================================================================
_00E_Game_SkillmenuSC Property Player Auto
int iKeyID
Int iKeyMeditateID
int iKeyID02
int iKeyMountID
;int iMeditateKeycode = 21
int iHeroMenuKeymap = 35
int iFSPhasmalistTeleportKeymap = 34
int iFSMountTeleportKeymap = 38
int toggleOID_MenuTutorials
@ -156,7 +143,6 @@ int toggleOID_VideoSkip
Message Property _00E_ConfigMenu_Keybindings Auto
Message Property _00E_ConfigMenu_OtherOptions Auto
Message Property _00E_ConfigMenu_GameplayOptions Auto
Message Property _00E_ConfigMenu_OpenHeroMenu Auto
Message Property _00E_ConfigMenu_Meditate Auto
Message Property _00E_FS_ConfigMenu_Phasmalist_Teleport Auto
Message Property _00E_FS_ConfigMenu_Mount_Teleport Auto
@ -171,7 +157,6 @@ Message Property _00E_ConfigMenu_VideoSkip Auto
_FS_Phasmalist_ControlQuest Property controlQuest Auto
_00E_Horseflute_SC Property _00E_HorseFlute_New Auto
GlobalVariable Property _00E_FS_IsForgottenStoriesActivated Auto
GlobalVariable Property _00E_DisableMenuTutorials Auto
GlobalVariable Property _00E_DisableCraftingTutorials Auto
GlobalVariable Property _00E_DisableSkillTutorials Auto
@ -179,3 +164,4 @@ GlobalVariable Property _00E_DisableQuestTutorials Auto
GlobalVariable Property _00E_DisableOtherTutorials Auto
GlobalVariable Property _00E_DisableReadAloudBooks Auto
GlobalVariable Property _00E_VideoSkip Auto
_00E_MeditationHotkeyAlias Property PlayerMeditation Auto

View File

@ -197,12 +197,6 @@ State RealPlayer
EndWhile
EndIf
If bShowHeroMenuHelpBox && (_00E_DisableMenuTutorials.GetValueInt() == 0)
bShowHeroMenuHelpBox = False
Message.ResetHelpMessage("Empty")
_00E_Tutorial_HeroMenue.ShowAsHelpMessage("Empty", 7, 30, 1)
EndIf
RegisterForSingleUpdate(3.5) ; seems like a decent value
EndEvent
@ -279,11 +273,6 @@ function levelUp()
Player.SetActorValue("Stamina", Player.GetBaseActorValue("Stamina")+11)
endif
Int iPlayerLevel = PlayerLevel.GetValueInt()
If iPlayerLevel >= 2 && iPlayerLevel <= 5
bShowHeroMenuHelpBox = True
EndIf
Endfunction
bool function receiveEP(int amount)
@ -428,7 +417,6 @@ Sound Property UILevelUp Auto
bool isdead
Bool ShowEXPMessage
bool bShowHeroMenuHelpBox = false
bool bDoneQuestCompleted = false
bool bDoneArcanistsFever = false
bool bOreAchievementUnlocked = false

View File

@ -7,68 +7,21 @@ Scriptname _00E_Game_SkillmenuSC extends ReferenceAlias
;
;
Import Math
Import ActorValueInfo
Import _00E_QuestFunctions
int function _GetScriptVersion() Global
return 1
endFunction
; This script handles the custom character menu
;=====================================================================================
; EVENTS
;=====================================================================================
Event OnInit()
iCurrentAffinityIndex = -1
InitAffinitySystem()
InitializeActorValueInfos()
UpdateKeyRegistration()
RegisterForMenu("Journal Menu")
EndEvent
Event OnPlayerLoadGame()
InitAffinitySystem()
UpdateKeyRegistration()
RegisterForMenu("Journal Menu")
EndEvent
Event OnKeyDown(Int KeyCode)
If KeyCode == iHeroMenuKeycode || (MenuOpen && (KeyCode == iExitHeroMenuKeycode1 || KeyCode == iExitHeroMenuKeycode2))
If !MenuOpen
If Utility.IsInMenuMode() == False && UI.IsTextInputEnabled() == False && PlayerREF.GetCurrentLocation() != _00E_Dreamworld_Location && bReadyToOpen
bReadyToOpen = False
InitializeActorValueInfos()
OpenSkillmenu()
Utility.Wait(0.5)
bReadyToOpen = True
EndIf
Else ; MenuOpen
CloseSkillmenu()
EndIf
ElseIf KeyCode == iMeditateKeycode
Spell meditateSpell = _00E_Class_Meditate.GetNthSpell(0)
If PlayerREF.HasSpell(_00E_Class_Meditate) && Utility.IsInMenuMode() == False && UI.IsTextInputEnabled() == False && PlayerRef.IsOnMount() == False && Game.IsLookingControlsEnabled() == true && UI.IsMenuOpen("Dialogue Menu") == False && PlayerREF.GetCurrentLocation() != _00E_Dreamworld_Location
meditateSpell.Cast(PlayerREF, PlayerREF)
EndIf
EndIf
EndEvent
Event OnMenuClose(String MenuName)
UpdateKeyRegistration()
EndEvent
@ -76,194 +29,6 @@ EndEvent
; FUNCTIONS
;=====================================================================================
Function _UpdateExitHeroMenuKeyRegistration(Int iExitKeycode)
If iExitKeycode != iHeroMenuKeycode && iExitKeycode != iMeditateKeycode
If MenuOpen
RegisterForKey(iExitKeycode)
Else
UnregisterForKey(iExitKeycode)
EndIf
EndIf
EndFunction
Function UpdateKeyRegistration()
RegisterForKey(iHeroMenuKeycode)
RegisterForKey(iMeditateKeycode)
bMeditateKeyRegistered = True
_UpdateExitHeroMenuKeyRegistration(iExitHeroMenuKeycode1)
_UpdateExitHeroMenuKeyRegistration(iExitHeroMenuKeycode2)
EndFunction
Function SetHeroMenuKey(int iNewKeyCode)
UnregisterForKey(iHeroMenuKeycode)
iHeroMenuKeycode = iNewKeyCode
UpdateKeyRegistration()
EndFunction
Function SetMeditateKey(int iNewMeditateKeycode)
UnregisterForKey(iMeditateKeycode)
iMeditateKeycode = iNewMeditateKeycode
UpdateKeyRegistration()
EndFunction
Function InitializeActorValueInfos()
AiHealth = GetActorValueInfoByID(24)
AiStamina = GetActorValueInfoByID(26)
AiMagicka = GetActorValueInfoByID(25)
AiRanged = GetActorValueInfoByID(8)
AiLightArmor = GetActorValueInfoByID(12)
AiPsionics = GetActorValueInfoByID(21) ; Vanilla - Illusion
AiElementarism = GetActorValueInfoByID(20); Vanilla - Destruction
AiManipulation = GetActorValueInfoByID(18); Vanilla - Alteration
AiOneHanded = GetActorValueInfoByID(6) ; Vanilla - OneHanded
AiTwoHanded = GetActorValueInfoByID(7) ; Vanilla - TwoHanded
AiParry = GetActorValueInfoByID(9) ; Vanilla - Block
AiLightMagic = GetActorValueInfoByID(22) ; Vanilla - Restoration
AiEntrophy = GetActorValueInfoByID(19) ; Vanilla - Conjuration
AiHeavyArmor = GetActorValueInfoByID(11) ; Vanilla - HeavyArmor
AiSneak = GetActorValueInfoByID(15) ; Vanilla - Sneak
AiAlchemy = GetActorValueInfoByID(16) ; Vanilla - Alchemy
AiPickpocket = GetActorValueInfoByID(13) ; Vanilla - Pickpocket
AiEnchanting = GetActorValueInfoByID(23) ; Vanilla - Enchanting
AiLockpicking = GetActorValueInfoByID(14) ; Vanilla - Lockpicking
AiSmithing = GetActorValueInfoByID(10) ; Vanilla - Smithing
AiSpeechcraft = GetActorValueInfoByID(17) ; Vanilla - Speechcraft
EndFunction
Function OpenSkillmenu()
If PlayerREF.GetCurrentLocation() != _00E_Dreamworld_Location
MenuOpen = True
_00E_Game_MenuIMOD.Apply()
UI.OpenCustomMenu("00E_heromenu")
UI.InvokeStringA("CustomMenu", "_root.heromenu_mc.SetStringValues", GetStrings())
UI.InvokeFloatA("CustomMenu", "_root.heromenu_mc.SetIntValues", GetFloats())
UI.InvokeFloatA("CustomMenu", "_root.heromenu_mc.SetModifier", GetMods())
EndIf
EndFunction
Function CloseSkillmenu()
UI.CloseCustomMenu()
_00E_Game_MenuIMOD.Remove()
MenuOpen = False
EndFunction
Float[] Function GetFloats()
Float[] SkillmenuFloats = New Float[33]
; float fNeededEXP = ((pow((PlayerLevel.GetValueInt() + 1), EXPMultSlope.GetValue()) * EXPMult.GetValue()) - (pow(PlayerLevel.GetValueInt(), EXPMultSlope.GetValue()) * EXPMult.GetValue()))
int iPlayerLevel = PlayerLevel.GetValueInt()
float fEXPMultSlope = EXPMultSlope.GetValue()
float fEXPMult = EXPMult.GetValue()
float fEXPNeededForCurrentLevel = PlayerREF.ComputeNeededExp(iPlayerLevel - 1, fEXPMultSlope, fEXPMult)
float fEXPNeededForNextLevel = PlayerREF.ComputeNeededExp(iPlayerLevel, fEXPMultSlope, fEXPMult)
int iPlayerExp = PlayerExp.GetValueInt()
SkillmenuFloats[0] = (AiHealth.GetBaseValue(PlayerREF)) as Int
SkillmenuFloats[1] = AiHealth.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[2] = aiMagicka.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[3] = aiMagicka.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[4] = aiStamina.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[5] = aiStamina.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[6] = (-1*(PlayerREF.GetActorValue("LastFlattered"))) as Int
SkillmenuFloats[7] = fEXPNeededForNextLevel
; (pow(PlayerLevel.GetValueInt(), EXPMultSlope.GetValue()) * (EXPMult.GetValue()*fEXPAcceleration))
;SkillmenuFloats[7] = ((pow((PlayerLevel.GetValueInt()), EXPMultSlope.GetValue()) * EXPMult.GetValue()) - (pow(PlayerLevel.GetValueInt() - 1, EXPMultSlope.GetValue()) * EXPMult.GetValue())) as Float
SkillmenuFloats[8] = iPlayerExp
SkillmenuFloats[9] = iPlayerLevel
SkillmenuFloats[10] = Lernpunkte.GetValueInt()
SkillmenuFloats[11] = Handwerkspunkte.GetValueInt()
SkillmenuFloats[12] = TalentPoints.GetValueInt()
SkillmenuFloats[13] = aiPsionics.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[14] = aiElementarism.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[15] = aiManipulation.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[16] = aiOneHanded.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[17] = aiParry.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[18] = aiRanged.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[19] = aiEntrophy.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[20] = aiLightMagic.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[21] = aiTwoHanded.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[22] = aiLightArmor.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[23] = aiHeavyArmor.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[24] = aiSneak.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[25] = aiAlchemy.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[26] = aiPickpocket.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[27] = aiLockpicking.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[28] = aiEnchanting.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[29] = aiSmithing.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[30] = aiSpeechcraft.GetBaseValue(PlayerREF) as Int
; 31 Ist der Füllstand des Balkens (Beginnend bei 0)
; 32 ist der Maximalwert des Balkens (Für gefüllten Balken)
SkillmenuFloats[31] = iPlayerExp - fEXPNeededForCurrentLevel
SkillmenuFloats[32] = fEXPNeededForNextLevel - fEXPNeededForCurrentLevel
; if PlayerExp.GetValueInt() == 1
; SkillmenuFloats[31] = PlayerExp.GetValueInt()
; SkillmenuFloats[32] = (pow(1, EXPMultSlope.GetValue()) * EXPMult.GetValue())
; Else
; SkillmenuFloats[31] = (PlayerExp.GetValueInt()-(pow((PlayerLevel.GetValueInt() - 1), EXPMultSlope.GetValue()) * EXPMult.GetValue()))
; SkillmenuFloats[32] = (pow(PlayerLevel.GetValueInt(), EXPMultSlope.GetValue()) * EXPMult.GetValue()) - (pow((PlayerLevel.GetValueInt() - 1), EXPMultSlope.GetValue()) * EXPMult.GetValue())
; EndIf
Return SkillmenuFloats
EndFunction
Float[] Function GetMods()
; Gets all modifiers applied to stats and skills
Float[] SkillmenuMods = New Float[21]
SkillmenuMods[0] = ((aiHealth.GetMaximumValue(PlayerREF) as Int) - (aiHealth.GetBaseValue(PlayerREF) as Int))
SkillmenuMods[1] = ((aiMagicka.GetMaximumValue(PlayerREF) as Int) - aiMagicka.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[2] = ((aiStamina.GetMaximumValue(PlayerREF) as Int) - aiStamina.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[3] = ((aiPsionics.GetCurrentValue(PlayerREF) as Int) - aiPsionics.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[4] = ((aiElementarism.GetCurrentValue(PlayerREF) as Int) - aiElementarism.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[5] = ((aiManipulation.GetCurrentValue(PlayerREF) as Int) - aiManipulation.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[6] = ((aiOneHanded.GetCurrentValue(PlayerREF) as Int) - aiOneHanded.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[7] = ((aiParry.GetCurrentValue(PlayerREF) as Int) - aiParry.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[8] = ((aiRanged.GetCurrentValue(PlayerREF) as Int) - aiRanged.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[9] = ((aiEntrophy.GetCurrentValue(PlayerREF) as Int) - aiEntrophy.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[10] = ((aiLightMagic.GetCurrentValue(PlayerREF) as Int) - aiLightMagic.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[11] = ((aiTwoHanded.GetCurrentValue(PlayerREF) as Int) - aiTwoHanded.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[12] = ((aiLightArmor.GetCurrentValue(PlayerREF) as Int) - aiLightArmor.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[13] = ((aiHeavyArmor.GetCurrentValue(PlayerREF) as Int) - aiHeavyArmor.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[14] = ((aiSneak.GetCurrentValue(PlayerREF) as Int) - aiSneak.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[15] = ((aiAlchemy.GetCurrentValue(PlayerREF) as Int) - aiAlchemy.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[16] = ((aiPickpocket.GetCurrentValue(PlayerREF) as Int) - aiPickpocket.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[17] = ((aiLockpicking.GetCurrentValue(PlayerREF) as Int) - aiLockpicking.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[18] = ((aiEnchanting.GetCurrentValue(PlayerREF) as Int) - aiEnchanting.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[19] = ((aiSmithing.GetCurrentValue(PlayerREF) as Int) - aiSmithing.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[20] = ((aiSpeechcraft.GetCurrentValue(PlayerREF) as Int) - aiSpeechcraft.GetBaseValue(PlayerREF) as Int)
Return SkillmenuMods
EndFunction
String[] Function GetStrings()
String[] SkillmenuStrings = new string[2]
SkillmenuStrings[0] = Player.GetName()
SkillmenuStrings[1] = GetPlayerClassName()
Return SkillmenuStrings
EndFunction
Int Function RegisterPerkTree(int index, FormList perkTree, Message affinityName_Male, Message affinityName_Female)
PerkTree_Trees[index] = perkTree
PerkTree_AffinityNames_Male[index] = affinityName_Male
@ -282,8 +47,6 @@ Function InitAffinitySystem()
BlockClassUpdates = True
Bool isFS = (_00E_FS_IsForgottenStoriesActivated.GetValueInt() == 1)
; Perk trees
PerkTree_Trees = New FormList[12]
PerkTree_AffinityNames_Male = New Message[12]
@ -302,13 +65,8 @@ Function InitAffinitySystem()
PerkTree_TrickeryIndex = RegisterPerkTree( 8, TrickeryPerks, _00E_Game_TrickeryName, _00E_Game_TrickeryName_Female)
PerkTree_VagabondIndex = RegisterPerkTree( 9, VagabondPerks, _00E_Game_VagabondName, _00E_Game_VagabondName_Female)
If isFS
PerkTree_PhasmalistIndex = RegisterPerkTree(10, FS_PhasmalistPerks, _00E_FS_Game_PhasmalistName, _00E_FS_Game_PhasmalistName_Female)
PerkTree_TheriantrophistIndex = RegisterPerkTree(11, FS_TheriantrophistPerks, _00E_FS_Game_TheriantrophistName, _00E_FS_Game_TheriantrophistName_Female)
Else
PerkTree_PhasmalistIndex = 10
PerkTree_TheriantrophistIndex = 11
EndIf
PerkTree_PhasmalistIndex = RegisterPerkTree(10, FS_PhasmalistPerks, _00E_FS_Game_PhasmalistName, _00E_FS_Game_PhasmalistName_Female)
PerkTree_TheriantrophistIndex = RegisterPerkTree(11, FS_TheriantrophistPerks, _00E_FS_Game_TheriantrophistName, _00E_FS_Game_TheriantrophistName_Female)
; Affinities
Affinity_Spells = New Spell[21]
@ -330,29 +88,16 @@ Function InitAffinitySystem()
Affinity_WanderingMageIndex = 10
; Affinity_WanderingMageIndex = RegisterAffinity(10, __Config_AffinityAbs[10], , )
If isFS
Affinity_SpectralistIndex = RegisterAffinity(11, _00E_FS_Affinity_AbRitualist, _00E_FS_Game_Affinity_Spectralist, _00E_FS_Game_Affinity_Spectralist_Female)
Affinity_GhostBladeIndex = RegisterAffinity(12, _00E_FS_Affinity_AbGhostblade, _00E_FS_Game_Affinity_GhostBlade, _00E_FS_Game_Affinity_GhostBlade_Female)
Affinity_SpectralWarriorIndex = RegisterAffinity(13, _00E_FS_Affinity_AbSpectralWarrior, _00E_FS_Game_Affinity_SpectralWarrior, _00E_FS_Game_Affinity_SpectralWarrior_Female)
Affinity_BruteIndex = RegisterAffinity(14, _00E_FS_Affinity_AbBrute, _00E_FS_Game_Affinity_Brute, _00E_FS_Game_Affinity_Brute_Female)
Affinity_DrifterIndex = RegisterAffinity(15, _00E_FS_Affinity_AbDrifter, _00E_FS_Game_Affinity_Drifter, _00E_FS_Game_Affinity_Drifter_Female)
Affinity_DruidIndex = RegisterAffinity(16, _00E_FS_Affinity_AbDruid, _00E_FS_Game_Affinity_Druid, _00E_FS_Game_Affinity_Druid_Female)
Affinity_NightwolfIndex = RegisterAffinity(17, _00E_FS_Affinity_AbNightwolf, _00E_FS_Game_Affinity_Nightwolf, _00E_FS_Game_Affinity_Nightwolf_Female)
Affinity_RavagerIndex = RegisterAffinity(18, _00E_FS_Affinity_AbRavager, _00E_FS_Game_Affinity_Ravager, _00E_FS_Game_Affinity_Ravager_Female)
Affinity_ScourgeOfTheWildsIndex = RegisterAffinity(19, _00E_FS_Affinity_AbScourge, _00E_FS_Game_Affinity_ScourgeOfTheWilds, _00E_FS_Game_Affinity_ScourgeOfTheWilds_Female)
Affinity_SoulcallerIndex = RegisterAffinity(20, _00E_FS_Affinity_AbSoulcaller, _00E_FS_Game_Affinity_Soulcaller, _00E_FS_Game_Affinity_Soulcaller_Female)
Else
Affinity_SpectralistIndex = 11
Affinity_GhostBladeIndex = 12
Affinity_SpectralWarriorIndex = 13
Affinity_BruteIndex = 14
Affinity_DrifterIndex = 15
Affinity_DruidIndex = 16
Affinity_NightwolfIndex = 17
Affinity_RavagerIndex = 18
Affinity_ScourgeOfTheWildsIndex = 19
Affinity_SoulcallerIndex = 20
EndIf
Affinity_SpectralistIndex = RegisterAffinity(11, _00E_FS_Affinity_AbRitualist, _00E_FS_Game_Affinity_Spectralist, _00E_FS_Game_Affinity_Spectralist_Female)
Affinity_GhostBladeIndex = RegisterAffinity(12, _00E_FS_Affinity_AbGhostblade, _00E_FS_Game_Affinity_GhostBlade, _00E_FS_Game_Affinity_GhostBlade_Female)
Affinity_SpectralWarriorIndex = RegisterAffinity(13, _00E_FS_Affinity_AbSpectralWarrior, _00E_FS_Game_Affinity_SpectralWarrior, _00E_FS_Game_Affinity_SpectralWarrior_Female)
Affinity_BruteIndex = RegisterAffinity(14, _00E_FS_Affinity_AbBrute, _00E_FS_Game_Affinity_Brute, _00E_FS_Game_Affinity_Brute_Female)
Affinity_DrifterIndex = RegisterAffinity(15, _00E_FS_Affinity_AbDrifter, _00E_FS_Game_Affinity_Drifter, _00E_FS_Game_Affinity_Drifter_Female)
Affinity_DruidIndex = RegisterAffinity(16, _00E_FS_Affinity_AbDruid, _00E_FS_Game_Affinity_Druid, _00E_FS_Game_Affinity_Druid_Female)
Affinity_NightwolfIndex = RegisterAffinity(17, _00E_FS_Affinity_AbNightwolf, _00E_FS_Game_Affinity_Nightwolf, _00E_FS_Game_Affinity_Nightwolf_Female)
Affinity_RavagerIndex = RegisterAffinity(18, _00E_FS_Affinity_AbRavager, _00E_FS_Game_Affinity_Ravager, _00E_FS_Game_Affinity_Ravager_Female)
Affinity_ScourgeOfTheWildsIndex = RegisterAffinity(19, _00E_FS_Affinity_AbScourge, _00E_FS_Game_Affinity_ScourgeOfTheWilds, _00E_FS_Game_Affinity_ScourgeOfTheWilds_Female)
Affinity_SoulcallerIndex = RegisterAffinity(20, _00E_FS_Affinity_AbSoulcaller, _00E_FS_Game_Affinity_Soulcaller, _00E_FS_Game_Affinity_Soulcaller_Female)
; Init affinitiesUnlocked if necessary
@ -393,15 +138,16 @@ Function UpdateMajorSchool()
EndIf
EndFunction
int Function GetPointsInClass(Formlist akClassPerkformlist)
int Function GetPointsInClass(Formlist akClassPerkformlist) Global
Actor PlREF = Game.GetForm(0x14) as Actor
Form[] perkForms = akClassPerkformlist.ToArray()
int PointsSpentInClass
int iClassIndex = 0
While iClassIndex < perkForms.Length
Perk iPerk = perkForms[iClassIndex] as Perk
If iPerk && PlayerREF.HasPerk(iPerk)
If iPerk && PlREF.HasPerk(iPerk)
PointsSpentInClass += 1
EndIf
iClassIndex += 1
@ -504,7 +250,7 @@ Function UpdateUnlockedAffinities(Int[] PerkDistribution)
; Cleric: Manipulation + Bastion/Rage
TryUnlockAffinity(PerkDistribution, Affinity_ClericIndex, PerkTree_ManipulationIndex, PerkTree_BastionIndex, PerkTree_RageIndex)
; Assassin/Assassine: Infiltraor und Klingentänzer
; Assassin/Assassine: Infiltraor und Klingentänzer
TryUnlockAffinity(PerkDistribution, Affinity_AssasinIndex, PerkTree_EspionageIndex, PerkTree_DerwishIndex)
; Wayfarer/Vielgereister: Vagabund und Gauner
@ -513,28 +259,28 @@ Function UpdateUnlockedAffinities(Int[] PerkDistribution)
; Black Mage/Schwarzmagier: Entropie und Elementarismus
TryUnlockAffinity(PerkDistribution, Affinity_BlackMageIndex, PerkTree_LifeAndDeathIndex, PerkTree_ElementalismIndex)
; Black Keeper/Schwarzer Hüter: Sinistra und Bastion
; Black Keeper/Schwarzer Hüter: Sinistra und Bastion
TryUnlockAffinity(PerkDistribution, Affinity_DarkKeeperIndex, PerkTree_LifeAndDeathIndex, PerkTree_BastionIndex)
; Fencer/Fechtmeister: Klingentänzer und Vandale
; Fencer/Fechtmeister: Klingentänzer und Vandale
TryUnlockAffinity(PerkDistribution, Affinity_FencerIndex, PerkTree_DerwishIndex, PerkTree_RageIndex)
; Bladebreaker/Klingenbrecher: Klingentänzer/Bastion
; Bladebreaker/Klingenbrecher: Klingentänzer/Bastion
TryUnlockAffinity(PerkDistribution, Affinity_BladebreakerIndex, PerkTree_DerwishIndex, PerkTree_BastionIndex)
; Shadow Dancer/Schattentänzer: Infiltator und Sinistra/Thaumaturg
; Shadow Dancer/Schattentänzer: Infiltator und Sinistra/Thaumaturg
TryUnlockAffinity(PerkDistribution, Affinity_ShadowdancerIndex, PerkTree_EspionageIndex, PerkTree_LifeAndDeathIndex)
; Wandering Mage/Wandermagier: Vagabund und Thaumaturg/Elementarist (currently not implemented)
TryUnlockAffinity(PerkDistribution, Affinity_WanderingMageIndex, PerkTree_VagabondIndex, PerkTree_ElementalismIndex, PerkTree_ManipulationIndex)
; Arcane Archer/Arkaner Schütze: Gauner und Thaumaturg/Elementarist/Sinistra
; Arcane Archer/Arkaner Schütze: Gauner und Thaumaturg/Elementarist/Sinistra
TryUnlockAffinity(PerkDistribution, Affinity_ArcaneArcherIndex, PerkTree_TrickeryIndex, PerkTree_ElementalismIndex, PerkTree_ManipulationIndex, PerkTree_LifeAndDeathIndex)
; Ritualist (Spectralist): Sinistrop und Phasmalist
TryUnlockAffinity(PerkDistribution, Affinity_SpectralistIndex, PerkTree_PhasmalistIndex, PerkTree_LifeAndDeathIndex)
; Spectral Warrior: Phasmalist und Vandale/Hüter/Klingentänzer
; Spectral Warrior: Phasmalist und Vandale/Hüter/Klingentänzer
TryUnlockAffinity(PerkDistribution, Affinity_SpectralWarriorIndex, PerkTree_PhasmalistIndex, PerkTree_RageIndex, PerkTree_BastionIndex, PerkTree_DerwishIndex)
; Ghostblade: Phasmalist und Infiltrator/Gauner
@ -644,12 +390,8 @@ Function GetPlayerClass()
iNewAffinityIndex = iOldAffinity
; FS ask
ElseIf _00E_FS_IsForgottenStoriesActivated.GetValueInt() == 1
iNewAffinityIndex = AskForAffinityFS(unlockedAffinityIndices, nTotalUnlockedAffinityCount, iOldAffinity)
; Old ask
Else
iNewAffinityIndex = AskForAffinityOld(unlockedAffinityIndices, nTotalUnlockedAffinityCount, iOldAffinity, oldAffinities)
iNewAffinityIndex = AskForAffinityFS(unlockedAffinityIndices, nTotalUnlockedAffinityCount, iOldAffinity)
EndIf
EndIf
@ -673,48 +415,6 @@ Function GetPlayerClass()
Endfunction
Int Function AskForAffinityOld(Int[] unlockedAffinityIndices, Int nUnlockedAffinities, Int iOldAffinity, Bool[] oldAffinities)
; Find first newly unlocked affinity, and fall back to first old unlocked affinity in case it fails
Int iNewAffinity = -1
Int iFallbackAffinity = -1
Int Index = 0
While Index < nUnlockedAffinities && iNewAffinity < 0
Int iAffinity = unlockedAffinityIndices[Index]
If iAffinity != iOldAffinity
If oldAffinities[iAffinity] == False
iNewAffinity = iAffinity
EndIf
If iFallbackAffinity < 0
iFallbackAffinity = iAffinity
EndIf
EndIf
Index += 1
EndWhile
If iNewAffinity < 0
iNewAffinity = iFallbackAffinity
EndIf
If iNewAffinity >= 0 && iOldAffinity >= 0
_00E_Affinity_Message_Actor_01.SetName(GetAffinityName(iOldAffinity))
_00E_Affinity_Message_Actor_02.SetName(GetAffinityName(iNewAffinity))
int iButton = _00E_Affinity_Messagebox.Show()
if iButton == 0 ; Old
Return iOldAffinity
Elseif iButton == 2 ; Keep old and don't show again
bDontShowAffinityMessageAgain = True
Return iOldAffinity
EndIf
EndIf
Return iNewAffinity
EndFunction
Int Function AskForAffinityFS(Int[] unlockedAffinityIndices, Int nUnlockedAffinities, Int iOldAffinity)
Bool enableDoNotShowAgain = False
@ -792,11 +492,6 @@ EndFunction
_00E_QuestFunctions Property Levelsystem Auto
int iHeroMenuKeycode = 35
Int Property iExitHeroMenuKeycode1 = 15 AutoReadOnly ; 15 = TAB
Int Property iExitHeroMenuKeycode2 = 1 AutoReadOnly ; 1 = ESC
int Property MajorClassIndex Auto Hidden
int Property MinorClassIndex Auto Hidden
int Property MajorSchool Auto
@ -805,45 +500,14 @@ int Property MajorSchool Auto
int iCurrentAffinityIndex = -1
bool[] affinitiesUnlocked
bool bDontShowAffinityMessageAgain
bool bHasAffinityBonus = False ; Left for backward compatibility with 1.2.x.x
bool bMemoryTreeAchievementUnlocked = False
bool bReadyToOpen = True
bool bStatsMenuOpen = False
; bool bControlsHaveBeenDisabled
ActorValueInfo AiHealth
ActorValueInfo AiStamina
ActorValueInfo AiMagicka
ActorValueInfo AiRanged ; Vanilla - Marksman
ActorValueInfo AiLightArmor ; Vanilla - Light Armor
ActorValueInfo AiPsionics ; Vanilla - Illusion
ActorValueInfo AiElementarism ; Vanilla - Destruction
ActorValueInfo AiManipulation ; Vanilla - Alteration
ActorValueInfo AiOneHanded ; Vanilla - OneHanded
ActorValueInfo AiTwoHanded ; Vanilla - TwoHanded
ActorValueInfo AiParry ; Vanilla - Block
ActorValueInfo AiLightMagic ; Vanilla - Restoration
ActorValueInfo AiEntrophy ; Vanilla - Conjuration
ActorValueInfo AiHeavyArmor ; Vanilla - HeavyArmor
ActorValueInfo AiSneak ; Vanilla - Sneak
ActorValueInfo AiAlchemy ; Vanilla - Alchemy
ActorValueInfo AiPickpocket ; Vanilla - Pickpocket
ActorValueInfo AiEnchanting ; Vanilla - Enchanting
ActorValueInfo AiLockpicking ; Vanilla - Lockpicking
ActorValueInfo AiSmithing ; Vanilla - Smithing
ActorValueInfo AiSpeechcraft ; Vanilla - Speechcraft
ActorBase Property Player Auto
_00E_EPUpdateFunctions Property PlayerREF Auto
ActorBase Property _00E_Affinity_Message_Actor_01 Auto
ActorBase Property _00E_Affinity_Message_Actor_02 Auto
bool MenuOpen = False
Message Property _00E_Game_sUnlockedAffinity Auto
; name messages
@ -892,14 +556,10 @@ Message Property _00E_Game_TrickeryName Auto
Message Property _00E_Game_VagabondName Auto
;end name messages
Message Property _00E_Affinity_Messagebox Auto
{Only necessary if FS is NOT used}
Message Property _00E_Affinity_MessageboxNew Auto
Message Property _00E_Affinity_MessageboxFirstAffinity Auto
Message Property _00E_Affinity_DoNotShowAgain Auto
Location Property _00E_Dreamworld_Location Auto
Spell Property _00E_Affinity_AbBattlemage Auto
Spell Property _00E_Affinity_AbCleric Auto
Spell Property _00E_Affinity_AbAssassin Auto
@ -921,20 +581,8 @@ Spell Property _00E_FS_Affinity_AbRavager Auto
Spell Property _00E_FS_Affinity_AbScourge Auto
Spell Property _00E_FS_Affinity_AbSoulcaller Auto
GlobalVariable Property PlayerExp Auto
GlobalVariable Property PlayerNeededExp Auto
GlobalVariable Property PlayerLevel Auto
GlobalVariable Property Lernpunkte Auto
GlobalVariable Property Handwerkspunkte Auto
GlobalVariable Property TalentPoints Auto
GlobalVariable Property EXPMultSlope Auto
GlobalVariable Property EXPMult Auto
GlobalVariable Property EXPAcceleration Auto
GlobalVariable Property _00E_FS_IsForgottenStoriesActivated Auto
GlobalVariable Property _00E_AchievementsEnabled Auto
ImageSpaceModifier Property _00E_Game_MenuIMOD Auto
Sound Property UIQuestCompleteM Auto
Quest Property NQ31 Auto
@ -1022,8 +670,3 @@ Int Affinity_ScourgeOfTheWildsIndex
Int Affinity_SoulcallerIndex
Bool BlockClassUpdates
Bool bMeditateKeyRegistered = False
Int Property iMeditateKeycode = 21 Auto Hidden ; 21 (Y on QWERTY, Z on QWERTZ)
Int Property iQuickStatsKeycode = 53 Auto Hidden ; 53 (/ on QWERTZ, - on QWERTY)
Shout Property _00E_Class_Meditate Auto

View File

@ -1,5 +0,0 @@
Scriptname _00E_HeroMenu Hidden
function Show() Global
((Game.GetForm(0x10AA2) as Quest).GetAlias(0) as _00E_Game_SkillmenuSC).OpenSkillmenu()
endfunction

View File

@ -0,0 +1,227 @@
Scriptname _00E_HeroMenuAlias extends ReferenceAlias Hidden
int function _GetScriptVersion() Global
return 1
endFunction
Event OnInit()
InitializeActorValueInfos()
RegisterForModEvent("Enderal_OpenHeroMenu", "OnHeroMenuRequest")
EndEvent
Event OnPlayerLoadGame()
if GetState() != ""
GotoState("")
endif
RegisterForModEvent("Enderal_OpenHeroMenu", "OnHeroMenuRequest")
EndEvent
Event OnHeroMenuRequest(string eventName, string strArg = "", float numArg = 0.0, Form sender = None)
GotoState("TryToOpen")
EndEvent
state TryToOpen
Event OnBeginState()
If (! Utility.IsInMenuMode() || UI.IsMenuOpen("TweenMenu")) && ! UI.IsTextInputEnabled() && GetReference().GetCurrentLocation() != _00E_Dreamworld_Location
GotoState("Active")
else
GotoState("")
endif
EndEvent
endstate
state Active
Event OnBeginState()
_00E_Game_MenuIMOD.Apply()
RegisterForControl("Cancel")
RegisterForControl("Quick Stats")
if ! UI.IsMenuOpen("CustomMenu")
UI.OpenCustomMenu("00E_heromenu")
endif
UI.InvokeStringA("CustomMenu", "_root.heromenu_mc.SetStringValues", GetStrings())
UI.InvokeFloatA("CustomMenu", "_root.heromenu_mc.SetIntValues", GetFloats())
UI.InvokeFloatA("CustomMenu", "_root.heromenu_mc.SetModifier", GetMods())
EndEvent
Event OnControlDown(string sControl)
GotoState("")
EndEvent
Event OnEndState()
UnregisterForAllControls()
UI.CloseCustomMenu()
_00E_Game_MenuIMOD.Remove()
EndEvent
endstate
Function InitializeActorValueInfos()
AiHealth = ActorValueInfo.GetActorValueInfoByID(24)
AiStamina = ActorValueInfo.GetActorValueInfoByID(26)
AiMagicka = ActorValueInfo.GetActorValueInfoByID(25)
AiRanged = ActorValueInfo.GetActorValueInfoByID(8)
AiLightArmor = ActorValueInfo.GetActorValueInfoByID(12)
AiPsionics = ActorValueInfo.GetActorValueInfoByID(21) ; Vanilla - Illusion
AiElementarism = ActorValueInfo.GetActorValueInfoByID(20); Vanilla - Destruction
AiManipulation = ActorValueInfo.GetActorValueInfoByID(18); Vanilla - Alteration
AiOneHanded = ActorValueInfo.GetActorValueInfoByID(6) ; Vanilla - OneHanded
AiTwoHanded = ActorValueInfo.GetActorValueInfoByID(7) ; Vanilla - TwoHanded
AiParry = ActorValueInfo.GetActorValueInfoByID(9) ; Vanilla - Block
AiLightMagic = ActorValueInfo.GetActorValueInfoByID(22) ; Vanilla - Restoration
AiEntrophy = ActorValueInfo.GetActorValueInfoByID(19) ; Vanilla - Conjuration
AiHeavyArmor = ActorValueInfo.GetActorValueInfoByID(11) ; Vanilla - HeavyArmor
AiSneak = ActorValueInfo.GetActorValueInfoByID(15) ; Vanilla - Sneak
AiAlchemy = ActorValueInfo.GetActorValueInfoByID(16) ; Vanilla - Alchemy
AiPickpocket = ActorValueInfo.GetActorValueInfoByID(13) ; Vanilla - Pickpocket
AiEnchanting = ActorValueInfo.GetActorValueInfoByID(23) ; Vanilla - Enchanting
AiLockpicking = ActorValueInfo.GetActorValueInfoByID(14) ; Vanilla - Lockpicking
AiSmithing = ActorValueInfo.GetActorValueInfoByID(10) ; Vanilla - Smithing
AiSpeechcraft = ActorValueInfo.GetActorValueInfoByID(17) ; Vanilla - Speechcraft
EndFunction
Float[] Function GetFloats()
Actor PlayerREF = GetReference() as Actor
Float[] SkillmenuFloats = New Float[33]
; float fNeededEXP = ((pow((PlayerLevel.GetValueInt() + 1), EXPMultSlope.GetValue()) * EXPMult.GetValue()) - (pow(PlayerLevel.GetValueInt(), EXPMultSlope.GetValue()) * EXPMult.GetValue()))
int iPlayerLevel = PlayerLevel.GetValueInt()
float fEXPMultSlope = EXPMultSlope.GetValue()
float fEXPMult = EXPMult.GetValue()
float fEXPNeededForCurrentLevel = (PlayerREF as _00E_EPUpdateFunctions).ComputeNeededExp(iPlayerLevel - 1, fEXPMultSlope, fEXPMult)
float fEXPNeededForNextLevel = (PlayerREF as _00E_EPUpdateFunctions).ComputeNeededExp(iPlayerLevel, fEXPMultSlope, fEXPMult)
int iPlayerExp = PlayerExp.GetValueInt()
SkillmenuFloats[0] = (AiHealth.GetBaseValue(PlayerREF)) as Int
SkillmenuFloats[1] = AiHealth.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[2] = aiMagicka.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[3] = aiMagicka.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[4] = aiStamina.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[5] = aiStamina.GetCurrentValue(PlayerREF) as Int
SkillmenuFloats[6] = (-1*(PlayerREF.GetActorValue("LastFlattered"))) as Int
SkillmenuFloats[7] = fEXPNeededForNextLevel
; (pow(PlayerLevel.GetValueInt(), EXPMultSlope.GetValue()) * (EXPMult.GetValue()*fEXPAcceleration))
;SkillmenuFloats[7] = ((pow((PlayerLevel.GetValueInt()), EXPMultSlope.GetValue()) * EXPMult.GetValue()) - (pow(PlayerLevel.GetValueInt() - 1, EXPMultSlope.GetValue()) * EXPMult.GetValue())) as Float
SkillmenuFloats[8] = iPlayerExp
SkillmenuFloats[9] = iPlayerLevel
SkillmenuFloats[10] = Lernpunkte.GetValueInt()
SkillmenuFloats[11] = Handwerkspunkte.GetValueInt()
SkillmenuFloats[12] = TalentPoints.GetValueInt()
SkillmenuFloats[13] = aiPsionics.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[14] = aiElementarism.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[15] = aiManipulation.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[16] = aiOneHanded.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[17] = aiParry.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[18] = aiRanged.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[19] = aiEntrophy.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[20] = aiLightMagic.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[21] = aiTwoHanded.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[22] = aiLightArmor.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[23] = aiHeavyArmor.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[24] = aiSneak.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[25] = aiAlchemy.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[26] = aiPickpocket.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[27] = aiLockpicking.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[28] = aiEnchanting.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[29] = aiSmithing.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[30] = aiSpeechcraft.GetBaseValue(PlayerREF) as Int
SkillmenuFloats[31] = iPlayerExp - fEXPNeededForCurrentLevel
SkillmenuFloats[32] = fEXPNeededForNextLevel - fEXPNeededForCurrentLevel
Return SkillmenuFloats
EndFunction
Float[] Function GetMods()
; Gets all modifiers applied to stats and skills
Actor PlayerREF = GetReference() as Actor
Float[] SkillmenuMods = New Float[21]
SkillmenuMods[0] = ((aiHealth.GetMaximumValue(PlayerREF) as Int) - (aiHealth.GetBaseValue(PlayerREF) as Int))
SkillmenuMods[1] = ((aiMagicka.GetMaximumValue(PlayerREF) as Int) - aiMagicka.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[2] = ((aiStamina.GetMaximumValue(PlayerREF) as Int) - aiStamina.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[3] = ((aiPsionics.GetCurrentValue(PlayerREF) as Int) - aiPsionics.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[4] = ((aiElementarism.GetCurrentValue(PlayerREF) as Int) - aiElementarism.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[5] = ((aiManipulation.GetCurrentValue(PlayerREF) as Int) - aiManipulation.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[6] = ((aiOneHanded.GetCurrentValue(PlayerREF) as Int) - aiOneHanded.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[7] = ((aiParry.GetCurrentValue(PlayerREF) as Int) - aiParry.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[8] = ((aiRanged.GetCurrentValue(PlayerREF) as Int) - aiRanged.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[9] = ((aiEntrophy.GetCurrentValue(PlayerREF) as Int) - aiEntrophy.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[10] = ((aiLightMagic.GetCurrentValue(PlayerREF) as Int) - aiLightMagic.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[11] = ((aiTwoHanded.GetCurrentValue(PlayerREF) as Int) - aiTwoHanded.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[12] = ((aiLightArmor.GetCurrentValue(PlayerREF) as Int) - aiLightArmor.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[13] = ((aiHeavyArmor.GetCurrentValue(PlayerREF) as Int) - aiHeavyArmor.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[14] = ((aiSneak.GetCurrentValue(PlayerREF) as Int) - aiSneak.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[15] = ((aiAlchemy.GetCurrentValue(PlayerREF) as Int) - aiAlchemy.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[16] = ((aiPickpocket.GetCurrentValue(PlayerREF) as Int) - aiPickpocket.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[17] = ((aiLockpicking.GetCurrentValue(PlayerREF) as Int) - aiLockpicking.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[18] = ((aiEnchanting.GetCurrentValue(PlayerREF) as Int) - aiEnchanting.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[19] = ((aiSmithing.GetCurrentValue(PlayerREF) as Int) - aiSmithing.GetBaseValue(PlayerREF) as Int)
SkillmenuMods[20] = ((aiSpeechcraft.GetCurrentValue(PlayerREF) as Int) - aiSpeechcraft.GetBaseValue(PlayerREF) as Int)
Return SkillmenuMods
EndFunction
String[] Function GetStrings()
String[] SkillmenuStrings = new string[2]
SkillmenuStrings[0] = Player.GetName()
SkillmenuStrings[1] = AffinityAlias.GetPlayerClassName()
Return SkillmenuStrings
EndFunction
ImageSpaceModifier Property _00E_Game_MenuIMOD Auto
Location Property _00E_Dreamworld_Location Auto
GlobalVariable Property PlayerLevel Auto
GlobalVariable Property PlayerExp Auto
GlobalVariable Property EXPMultSlope Auto
GlobalVariable Property EXPMult Auto
GlobalVariable Property Lernpunkte Auto
GlobalVariable Property Handwerkspunkte Auto
GlobalVariable Property TalentPoints Auto
ActorBase Property Player Auto
ActorValueInfo AiHealth
ActorValueInfo AiStamina
ActorValueInfo AiMagicka
ActorValueInfo AiRanged ; Vanilla - Marksman
ActorValueInfo AiLightArmor ; Vanilla - Light Armor
ActorValueInfo AiPsionics ; Vanilla - Illusion
ActorValueInfo AiElementarism ; Vanilla - Destruction
ActorValueInfo AiManipulation ; Vanilla - Alteration
ActorValueInfo AiOneHanded ; Vanilla - OneHanded
ActorValueInfo AiTwoHanded ; Vanilla - TwoHanded
ActorValueInfo AiParry ; Vanilla - Block
ActorValueInfo AiLightMagic ; Vanilla - Restoration
ActorValueInfo AiEntrophy ; Vanilla - Conjuration
ActorValueInfo AiHeavyArmor ; Vanilla - HeavyArmor
ActorValueInfo AiSneak ; Vanilla - Sneak
ActorValueInfo AiAlchemy ; Vanilla - Alchemy
ActorValueInfo AiPickpocket ; Vanilla - Pickpocket
ActorValueInfo AiEnchanting ; Vanilla - Enchanting
ActorValueInfo AiLockpicking ; Vanilla - Lockpicking
ActorValueInfo AiSmithing ; Vanilla - Smithing
ActorValueInfo AiSpeechcraft ; Vanilla - Speechcraft
_00E_Game_SkillmenuSC Property AffinityAlias Auto

View File

@ -0,0 +1,40 @@
Scriptname _00E_MeditationHotkeyAlias extends ReferenceAlias Hidden
int function _GetScriptVersion() Global
return 1
endFunction
Function UpdateKeyRegistration()
RegisterForKey(iMeditateKeycode)
EndFunction
Function SetMeditateKey(int iNewMeditateKeycode)
UnregisterForKey(iMeditateKeycode)
iMeditateKeycode = iNewMeditateKeycode
UpdateKeyRegistration()
EndFunction
Event OnInit()
UpdateKeyRegistration()
EndEvent
Event OnPlayerLoadGame()
UpdateKeyRegistration()
EndEvent
Event OnKeyDown(Int KeyCode)
Spell meditateSpell = _00E_Class_Meditate.GetNthSpell(0)
Actor PlayerREF = GetReference() as Actor
If ! Utility.IsInMenuMode() && PlayerREF.HasSpell(_00E_Class_Meditate) && ! UI.IsTextInputEnabled() && ! PlayerRef.IsOnMount() && ! PlayerRef.IsSwimming() && Game.IsLookingControlsEnabled() && ! UI.IsMenuOpen("Dialogue Menu") && PlayerREF.GetCurrentLocation() != _00E_Dreamworld_Location
meditateSpell.Cast(PlayerREF, PlayerREF)
EndIf
EndEvent
Int Property iMeditateKeycode = 21 Auto ; 21 (Y on QWERTY, Z on QWERTZ)
Shout Property _00E_Class_Meditate Auto
Location Property _00E_Dreamworld_Location Auto

View File

@ -454,7 +454,6 @@ Actor Property PlayerREF Auto
Actor Property _00E_MC_JesparREF Auto
Actor Property MQ02_CampBanditREF Auto
_00E_Game_SkillmenuSC Property Player Auto
_00E_QuestFunctions Property Levelsystem Auto
Potion Property _00E_LehrbuchBlockTo25 Auto

View File

@ -3,6 +3,10 @@ Scriptname _00E_NQR01_Functions extends Quest Conditional
Import Utility
Import _00E_QuestFunctions
int function _GetScriptVersion() Global
return 1
endFunction
;=====================================================================================
; EVENTS
;=====================================================================================
@ -682,8 +686,6 @@ Actor Property FS_NQR01_Fistfighter02 Auto
Actor Property FS_NQR01_PitFighterFacadeParentREF Auto
Actor Property FS_NQR01_SC8_IAmInTheWayRatREF Auto
_00E_Game_SkillmenuSC Property Player Auto
; 1: The Destroyer / Deathviper
; 2: The Wanderer / The Wanderer
; 3: The Prophet / The Prophetess

View File

@ -1041,7 +1041,7 @@ bool Function RequirementsMetMemoryBook(int iTier, Perk Perk01, Perk Perk02, Per
ClassFormList03 = ManipulationPerks
EndIf
int iTotalPointsInRequiredClass = (PlayerSkillMenu.GetPointsInClass(ClassFormList01) + PlayerSkillMenu.GetPointsInClass(ClassFormList02) + PlayerSkillMenu.GetPointsInClass(ClassFormList03))
int iTotalPointsInRequiredClass = (_00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList01) + _00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList02) + _00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList03))
if iTotalPointsInRequiredClass >= iRequiredPoints
Return True
Else
@ -1262,8 +1262,6 @@ Formlist Property ElementalismPerks Auto
Formlist Property LifeAndDeathPerks Auto
Formlist Property ManipulationPerks Auto
_00E_Game_SkillmenuSC Property PlayerSkillMenu Auto
Bool _MemoryBookReadLocked = False
;-------------------------------------TELEPORT SCRIPT-----------------------------------