diff --git a/Separate affinity quest.esp b/Separate affinity quest.esp new file mode 100644 index 00000000..f2d2e55d Binary files /dev/null and b/Separate affinity quest.esp differ diff --git a/Separate hero menu.esp b/Separate hero menu.esp new file mode 100644 index 00000000..e75db93c Binary files /dev/null and b/Separate hero menu.esp differ diff --git a/Separate meditation hotkey.esp b/Separate meditation hotkey.esp new file mode 100644 index 00000000..4e643e02 Binary files /dev/null and b/Separate meditation hotkey.esp differ diff --git a/scripts/_00e_enderalmcm.pex b/scripts/_00e_enderalmcm.pex index 7a1b3652..cdab063d 100644 Binary files a/scripts/_00e_enderalmcm.pex and b/scripts/_00e_enderalmcm.pex differ diff --git a/scripts/_00e_epupdatefunctions.pex b/scripts/_00e_epupdatefunctions.pex index e941b6d1..c4a17cb9 100644 Binary files a/scripts/_00e_epupdatefunctions.pex and b/scripts/_00e_epupdatefunctions.pex differ diff --git a/scripts/_00e_game_skillmenusc.pex b/scripts/_00e_game_skillmenusc.pex index f7b00256..f8198958 100644 Binary files a/scripts/_00e_game_skillmenusc.pex and b/scripts/_00e_game_skillmenusc.pex differ diff --git a/scripts/_00e_heromenu.pex b/scripts/_00e_heromenu.pex deleted file mode 100644 index 7671f0ff..00000000 Binary files a/scripts/_00e_heromenu.pex and /dev/null differ diff --git a/scripts/_00e_heromenualias.pex b/scripts/_00e_heromenualias.pex new file mode 100644 index 00000000..021b287a Binary files /dev/null and b/scripts/_00e_heromenualias.pex differ diff --git a/scripts/_00e_meditationhotkeyalias.pex b/scripts/_00e_meditationhotkeyalias.pex new file mode 100644 index 00000000..e47e3414 Binary files /dev/null and b/scripts/_00e_meditationhotkeyalias.pex differ diff --git a/scripts/_00e_mq02_functions.pex b/scripts/_00e_mq02_functions.pex index 9bcad5c6..79381ad9 100644 Binary files a/scripts/_00e_mq02_functions.pex and b/scripts/_00e_mq02_functions.pex differ diff --git a/scripts/_00e_nqr01_functions.pex b/scripts/_00e_nqr01_functions.pex index 139fcbc5..03f6bda6 100644 Binary files a/scripts/_00e_nqr01_functions.pex and b/scripts/_00e_nqr01_functions.pex differ diff --git a/scripts/_00e_questfunctions.pex b/scripts/_00e_questfunctions.pex index 99b1a3da..2b755e27 100644 Binary files a/scripts/_00e_questfunctions.pex and b/scripts/_00e_questfunctions.pex differ diff --git a/source/scripts/_00e_enderalmcm.psc b/source/scripts/_00e_enderalmcm.psc index aa903002..bd667f8c 100644 --- a/source/scripts/_00e_enderalmcm.psc +++ b/source/scripts/_00e_enderalmcm.psc @@ -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,11 +157,11 @@ 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 GlobalVariable Property _00E_DisableQuestTutorials Auto GlobalVariable Property _00E_DisableOtherTutorials Auto GlobalVariable Property _00E_DisableReadAloudBooks Auto -GlobalVariable Property _00E_VideoSkip Auto \ No newline at end of file +GlobalVariable Property _00E_VideoSkip Auto +_00E_MeditationHotkeyAlias Property PlayerMeditation Auto diff --git a/source/scripts/_00e_epupdatefunctions.psc b/source/scripts/_00e_epupdatefunctions.psc index 7cf9e2c8..f6530ad4 100644 --- a/source/scripts/_00e_epupdatefunctions.psc +++ b/source/scripts/_00e_epupdatefunctions.psc @@ -196,12 +196,6 @@ State RealPlayer levelUp() 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 diff --git a/source/scripts/_00e_game_skillmenusc.psc b/source/scripts/_00e_game_skillmenusc.psc index c63346c9..1f0064f0 100644 --- a/source/scripts/_00e_game_skillmenusc.psc +++ b/source/scripts/_00e_game_skillmenusc.psc @@ -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 + Else iNewAffinityIndex = AskForAffinityFS(unlockedAffinityIndices, nTotalUnlockedAffinityCount, iOldAffinity) - - ; Old ask - Else - iNewAffinityIndex = AskForAffinityOld(unlockedAffinityIndices, nTotalUnlockedAffinityCount, iOldAffinity, oldAffinities) 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 \ No newline at end of file diff --git a/source/scripts/_00e_heromenu.psc b/source/scripts/_00e_heromenu.psc deleted file mode 100644 index df603385..00000000 --- a/source/scripts/_00e_heromenu.psc +++ /dev/null @@ -1,5 +0,0 @@ -Scriptname _00E_HeroMenu Hidden - -function Show() Global - ((Game.GetForm(0x10AA2) as Quest).GetAlias(0) as _00E_Game_SkillmenuSC).OpenSkillmenu() -endfunction diff --git a/source/scripts/_00e_heromenualias.psc b/source/scripts/_00e_heromenualias.psc new file mode 100644 index 00000000..eeb7f824 --- /dev/null +++ b/source/scripts/_00e_heromenualias.psc @@ -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 diff --git a/source/scripts/_00e_meditationhotkeyalias.psc b/source/scripts/_00e_meditationhotkeyalias.psc new file mode 100644 index 00000000..a9acb4b7 --- /dev/null +++ b/source/scripts/_00e_meditationhotkeyalias.psc @@ -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 diff --git a/source/scripts/_00e_mq02_functions.psc b/source/scripts/_00e_mq02_functions.psc index c20ba8a7..f0ce7544 100644 --- a/source/scripts/_00e_mq02_functions.psc +++ b/source/scripts/_00e_mq02_functions.psc @@ -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 diff --git a/source/scripts/_00e_nqr01_functions.psc b/source/scripts/_00e_nqr01_functions.psc index 02c4da1a..76cc66ce 100644 --- a/source/scripts/_00e_nqr01_functions.psc +++ b/source/scripts/_00e_nqr01_functions.psc @@ -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 diff --git a/source/scripts/_00e_questfunctions.psc b/source/scripts/_00e_questfunctions.psc index 1f381818..5546e406 100644 --- a/source/scripts/_00e_questfunctions.psc +++ b/source/scripts/_00e_questfunctions.psc @@ -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-----------------------------------