enderalse/scripts/source/_00e_playersetupscript.psc
2021-10-06 00:59:59 +02:00

641 lines
28 KiB
Plaintext

Scriptname _00E_PlayerSetUpScript extends ObjectReference
{Initializes all the necessary Quests, maintains the player, contains various OnPlayerLoadGame() failsafes}
Float Property CURRENT_PATCH_VERSION = 2.08 AutoReadOnly
;=====================================================================================
; EVENTS
;=====================================================================================
Event OnInit()
; needs the IsInMenuMode() check to prevent stuck messages when FS is not loaded
While Utility.IsInMenuMode()
Utility.WaitMenuMode(0.1)
EndWhile
CheckIfForgottenStoriesIsLoaded()
If self == (PlayerREF as ObjectReference)
If fPatchVersion == 0.00
fPatchVersion = CURRENT_PATCH_VERSION
EndIf
GoToState("RealPlayer")
PlayerREF.SetActorValue("speedMult", 95)
PlayerREF.SetActorValue("Healrate", 0)
SetAmountAutosaves()
EnableDisableKillmove()
AddPerks()
DisableRegularWaiting()
StartQuests(QuestsToStart)
EndIf
EndEvent
Event OnPlayerLoadGame()
If self == (PlayerREF as ObjectReference) ; A check just in case. Most likely this condition is always True
CheckIfForgottenStoriesIsLoaded()
Maintenance()
If GetState() != "RealPlayer" ; Post-1.2.5.0 version update
GoToState("RealPlayer")
EndIf
EndIf
EndEvent
State RealPlayer
;/ Event OnBeginState()
Debug.Trace(self + ": OnBeginState RealPlayer")
EndEvent /;
EndState
;=====================================================================================
; FUNCTIONS
;=====================================================================================
Function CheckIfForgottenStoriesIsLoaded()
; function that quits back to the main menu when the Enderal - Forgotten Stories.esm is not not being added to the plugins.txt
; and hence not being loaded in-game. Unknown reason, probably write protection issues
If Game.GetModByName("Enderal - Forgotten Stories.esm") == 255
bFSWasNotLoadedBefore = true
_00E_Game_ForgottenStoriesNotLoaded.Show()
Game.QuitToMainMenu()
Else
If bFSWasNotLoadedBefore == true
AddPerks()
If FSQuestsToStartFailsafePatch1560 == None
FSQuestsToStartFailsafePatch1560 = Game.GetFormFromFile(0x0102F4B0, "Enderal - Forgotten Stories.esm") as FormList
EndIf
StartQuests(FSQuestsToStartFailsafePatch1560)
bFSWasNotLoadedBefore = false
EndIf
EndIf
EndFunction
;=====================================================================================
; 1.5.6.0
;=====================================================================================
Function ResetFSNQR05Temple()
; resets the cells which is needed due to the fixes on enemies and ambushes in patch 1.5.6.0
Quest FS_NQR05 = Game.GetFormFromFile(0x000438D2,"Skyrim.esm") as Quest
Cell FS_NQR05_Temple_02_New = Game.GetFormFromFile(0x00045101,"Skyrim.esm") as Cell
If FS_NQR05.GetStage() < 165
FS_NQR05_Temple_02_New.Reset()
EndIf
EndFunction
;=====================================================================================
; 1.5.7.0
;=====================================================================================
Function CleanMQ12bGhostFlags()
; cleans old ghost flags on certain NPCs after the siege when patch 1.5.7.0 is applied
; only needed once, since it won't happen anymore for everyone with a save before the siege
_00E_MQ12b_Functions MQ12bFunctions = Game.GetFormFromFile(0x0002EBAD,"Skyrim.esm") as _00E_MQ12b_Functions
MQ12bFunctions.OldRemoveGhostFlag()
EndFunction
;=====================================================================================
; 1.5.8.0
;=====================================================================================
Function ResetAuroraOnLoad()
; resets Aurora if she was stuck during the ritual scene due to the gamehour change while she was in the smoking animation
_00E_FS_NQ07_Functions FS_NQ07Functions = Game.GetFormFromFile(0x0101CA09,"Enderal - Forgotten Stories.esm") as _00E_FS_NQ07_Functions
FS_NQ07Functions.ResetAurora()
EndFunction
Function DisableMQ12bPanicTriggerbox()
; disables MQ12b_SC3_PanicTriggerboxREF when patch 1.5.8.0 is applied
_00E_MQ12b_Functions MQ12bFunctions = Game.GetFormFromFile(0x0002EBAD,"Skyrim.esm") as _00E_MQ12b_Functions
If MQ12bFunctions.IsCompleted()
MQ12bFunctions.DisablePanicTriggerbox()
EndIf
EndFunction
Function ReAddDarkKeeperAffinity()
; Dark Keeper Affinity Update
Spell _00E_Affinity_AbDarkKeeper = Game.GetFormFromFile(0x00143340,"Skyrim.esm") as Spell
If PlayerREF.HasSpell(_00E_Affinity_AbDarkKeeper)
PlayerREF.RemoveSpell(_00E_Affinity_AbDarkKeeper)
Utility.Wait(1)
PlayerREF.AddSpell(_00E_Affinity_AbDarkKeeper, false)
EndIf
EndFunction
Function ReAddFuryDrivenPerk()
; Fury Driven ability update
Spell abFuryDriven = Game.GetFormFromFile(0x000855CE, "Skyrim.esm") as Spell
If PlayerREF.HasSpell(abFuryDriven)
PlayerREF.RemoveSpell(abFuryDriven)
Utility.Wait(1)
PlayerREF.AddSpell(abFuryDriven, False)
EndIf
EndFunction
Function UpdateLivingTempleTrigger()
; Living Temple's ambush trigger update
ObjectReference triggerRef = Game.GetFormFromFile(0x000C6766, "Skyrim.esm") as ObjectReference
(triggerRef as defaultActivateSelf).playerAndAlliesOnly = True
EndFunction
Function UpdateMQ11a()
; MQ11a update
ObjectReference portcullisRef = Game.GetFormFromFile(0x000E1D1F, "Skyrim.esm") as ObjectReference
Quest MQ11a = Game.GetFormFromFile(0x0002EBA9, "Skyrim.esm") as Quest
If (MQ11a.GetStage() <= 125) && (portcullisRef.Is3DLoaded() == False)
(portcullisRef as _00E_DUNGate01Script).isOpen = False
EndIf
If MQ11a.IsRunning() && (MQ11a.IsCompleted() == False)
(MQ11a as _00E_MQ11a_Functions).UpdateCaliaAliasScriptState()
EndIf
ObjectReference NQ34_EnableMarkerREF = Game.GetFormFromFile(0x000480E8, "Skyrim.esm") as ObjectReference
If MQ11a.GetStage() >= 45
NQ34_EnableMarkerREF.Enable()
EndIf
Actor NQ34_WildMageREF = Game.GetFormFromFile(0x00141F00, "Skyrim.esm") as Actor
Quest NQ34 = Game.GetFormFromFile(0x00020A12, "Skyrim.esm") as Quest
If NQ34.GetStage() == 15 || NQ34.GetStage() == 20
NQ34_WildMageREF.Enable()
EndIf
If NQ34_WildMageREF.IsDead() && NQ34.GetStage() == 15
NQ34.SetStage(20)
EndIf
EndFunction
Function AddPerks()
; adds the new Balancing perks for alchemy potions to the player, this is needed because of the changes with the Lycantroph
PlayerREF.AddPerk(_00E_FS_Alchemy_BalancingPerk)
PlayerREF.AddPerk(_00E_FS_Alchemy_BalancingPerk_RestorePotions)
EndFunction
Function DisableRegularWaiting()
{Disables regular waiting by adding the no-wait ability}
PlayerREF.AddSpell(_00E_AbBlockWaiting, False)
EndFunction
Function StartQuests(Formlist QuestList)
; starts all quests that are in the formlist
Int iIndex = QuestList.GetSize()
While iIndex
iIndex -= 1
Quest kQuest = QuestList.GetAt(iIndex) as Quest
kQuest.Start()
endwhile
EndFunction
;=====================================================================================
; 1.6.0.0
;=====================================================================================
Function UpdatePhasmalistContainer()
ObjectReference Phasmalist_ApparationInventory_Bandit_Tier4 = Game.GetFormFromFile(0x0101E99B, "Enderal - Forgotten Stories.esm") as ObjectReference
ObjectReference Phasmalist_ApparationInventory_Archer_Tier5 = Game.GetFormFromFile(0x0101E9CA, "Enderal - Forgotten Stories.esm") as ObjectReference
Armor _00E_Phasmalist_Trinket_Bandit_Tier4 = Game.GetFormFromFile(0x0101E9A6, "Enderal - Forgotten Stories.esm") as Armor
Armor _00E_Phasmalist_Trinket_Archer_Tier5 = Game.GetFormFromFile(0x0101E9D4, "Enderal - Forgotten Stories.esm") as Armor
_00E_Phasmalist_ApparationSC _36E_Phasmalist_Apparation_Hybrid_Tier4 = Game.GetFormFromFile(0x01025309, "Enderal - Forgotten Stories.esm") as _00E_Phasmalist_ApparationSC
_36E_Phasmalist_Apparation_Hybrid_Tier4.inventoryContainer = Phasmalist_ApparationInventory_Bandit_Tier4
If (PlayerREF.GetItemCount(_00E_Phasmalist_Trinket_Bandit_Tier4) > 0 && PlayerREF.GetItemCount(_00E_Phasmalist_Trinket_Archer_Tier5) == 0)
Phasmalist_ApparationInventory_Archer_Tier5.RemoveAllItems(Phasmalist_ApparationInventory_Bandit_Tier4, false, true)
EndIf
EndFunction
Function UpdatePassengerBookAtShipwreck()
_00E_FS_NQ02_Functions FS_NQ02_Functions = (Game.GetFormFromFile(0x000438AC, "Skyrim.esm") as Quest) as _00E_FS_NQ02_Functions
FS_NQ02_Functions.UpdatePassengerBook()
EndFunction
Function ResetMQ02Riddle()
GlobalVariable _00E_MQ02Riddle = Game.GetFormFromFile(0x00074B07, "Skyrim.esm") as GlobalVariable
If _00E_MQ02Riddle.GetValueInt() > 0
_00E_MQ02_Functions MQ02Functions = Game.GetFormFromFile(0x0002EBA1, "Skyrim.esm") as _00E_MQ02_Functions
MQ02Functions.ResetRiddle()
EndIf
EndFunction
;=====================================================================================
; 1.6.1.0
;=====================================================================================
Function UpdateMQ02()
_00E_MQ02_Functions MQ02Functions = Game.GetFormFromFile(0x0002EBA1, "Skyrim.esm") as _00E_MQ02_Functions
Int mq02stage = MQ02Functions.GetStage()
If mq02stage >= 138 && mq02stage < 170
MQ02Functions.MQ02_TripToArkEnableMarker.EnableNoWait()
EndIf
EndFunction
;=====================================================================================
; 1.6.2.0
;=====================================================================================
Function UpdateItemHandler()
Cell ClassMenue = Game.GetFormFromFile(0x000A7FBC, "Skyrim.esm") as Cell
If PlayerREF.GetParentCell() == ClassMenue
Quest ClassMenuItemHandler = Game.GetFormFromFile(0x00048442, "Skyrim.esm") as Quest
ReferenceAlias Player = ClassMenuItemHandler.GetAliasByName("Player") as ReferenceAlias
Player.ForceRefTo(PlayerREF)
EndIf
EndFunction
;=====================================================================================
; 2.0.6
;=====================================================================================
Function UpdateMQ12b_206()
_00E_MQ12b_Functions MQ12bFunctions = Game.GetFormFromFile(0x0002EBAD, "Skyrim.esm") as _00E_MQ12b_Functions
Quest MQ15 = Game.GetFormFromFile(0x0002EBB0, "Skyrim.esm") as Quest
If MQ12bFunctions.GetStage() >= 135 && MQ15.GetStage() < 5
MQ12bFunctions.OldReenableDisabledNPC()
EndIf
EndFunction
;=====================================================================================
; 2.0.8
;=====================================================================================
Function Update_208()
; Obsolete abilities cleanup
_00E_FS_NQ07_Functions FS_NQ07_Quest = Game.GetFormFromFile(0x0001CA09, "Enderal - Forgotten Stories.esm") as _00E_FS_NQ07_Functions
Int iFS_NQ07Stage = FS_NQ07_Quest.GetStage()
If iFS_NQ07Stage >= 5 && iFS_NQ07Stage < 410
FS_NQ07_Quest.UpdateAarosCarryTraySpell()
Else
RemoveObsoleteSpell(0x0009A893, "Skyrim.esm", 0x000F649A, "Skyrim.esm")
EndIf
RemoveObsoleteSpell(0x0010D339, "Skyrim.esm", 0x000F649A, "Skyrim.esm")
RemoveObsoleteSpell(0x0006FFAF, "Skyrim.esm", 0x000F6498, "Skyrim.esm")
RemoveObsoleteSpell(0x000F64A0, "Skyrim.esm", 0x000F6498, "Skyrim.esm")
; Refill _00E_AnimTest_SC package arrays where needed
FillAnimTestPackages(0x00137889, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x0013788A, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x0013789F, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x001378A2, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x001378AA, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x001378AB, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x00147E12, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x00147E14, "Skyrim.esm", 0x00070657, "Skyrim.esm")
FillAnimTestPackages(0x0010D336, "Skyrim.esm", 0x00070645, "Skyrim.esm")
FillAnimTestPackages(0x0010D33B, "Skyrim.esm", 0x00070645, "Skyrim.esm")
FillAnimTestPackages(0x00147DEA, "Skyrim.esm", 0x00070645, "Skyrim.esm")
FillAnimTestPackages(0x00147E37, "Skyrim.esm", 0x00070645, "Skyrim.esm")
; "Gypsy minstrels" update
Keyword performSpotKwd = Game.GetFormFromFile(0x000FB905, "Skyrim.esm") as Keyword
(Game.GetFormFromFile(0x00044EBC, "Skyrim.esm") as _00E_BardPlayInstrumentScript).LinkedPlayMarkerKeyword = performSpotKwd
(Game.GetFormFromFile(0x00046D79, "Skyrim.esm") as _00E_GypsyMinstrelsControlScript).UpdateWaypoint()
EndFunction
Function RemoveObsoleteSpell(Int idNPC, String esmNPC, Int idSpell, String esmSpell)
Spell obsoleteSpell = Game.GetFormFromFile(idSpell, esmSpell) as Spell
(Game.GetFormFromFile(idNPC, esmNPC) as Actor).RemoveSpell(obsoleteSpell)
EndFunction
Function FillAnimTestPackages(Int idNPC, String esmNPC, Int idPackage, String esmPackage)
Package newPackage = Game.GetFormFromFile(idPackage, esmPackage) as Package
(Game.GetFormFromFile(idNPC, esmNPC) as _00E_AnimTest_SC).UpdateFillPackages(newPackage)
EndFunction
;=====================================================================================
; ALL UPDATES
;=====================================================================================
Function EnableDisableKillmove()
; it seems like that this ini setting does not do stuff by itself (or it is bugged)
; therefore we need to read it from the file and change the global with which the killmoves are conditioned
If (Utility.GetINIBool("bVATSDisable:VATS") == 1)
KillMove.SetValueInt(0)
ElseIf (Utility.GetINIBool("bVATSDisable:VATS") == 0)
KillMove.SetValueInt(1)
EndIf
EndFunction
Function SetAmountAutosaves()
; increases amount of autosaves created from 3 to 5 without editing the ini files
; new default ini files already have set the int to 5
If Utility.GetINIInt("iAutoSaveCount:SaveGame") == 3
Utility.SetINIInt("iAutoSaveCount:SaveGame", 5)
EndIf
EndFunction
Function SetAutoSaveInterval()
; updates the autosave interval
_00E_AutoSaveSystem_Functions AutoSaveSystem_Functions = Game.GetFormFromFile(0x00048141, "Skyrim.esm") as _00E_AutoSaveSystem_Functions
AutoSaveSystem_Functions.UpdateAutoSaveInterval()
EndFunction
Function FailsafeMQ05PrologueAliases()
; failsafe for issue 1536, fills empty aliases
If MQ05PrologueFunctions == None
MQ05PrologueFunctions = Game.GetFormFromFile(0x00033A5B, "Skyrim.esm") as _00E_MQ05Prologue_Functions
EndIf
MQ05PrologueFunctions.FillEmptyAliasesFailsafe()
EndFunction
Function RefreshMountNamesOnLoad()
_00E_NQ06_Functions NQ06Functions = Game.GetFormFromFile(0x000725BA,"Skyrim.esm") as _00E_NQ06_Functions
NQ06Functions.RefreshNamesOnSaveLoad()
EndFunction
Function _ResetArmorWeightPerk(Perk weightPerk)
If PlayerREF.HasPerk(weightPerk)
PlayerREF.RemovePerk(weightPerk)
PlayerREF.AddPerk(weightPerk)
EndIf
EndFunction
Function ResetArmorWeightPerks()
; Perks modifying armor weights need some push on each game load to work.
; The push is needed only if the player is over-encumbered on game load.
; If the player is not over-encumbered, the push is not needed because checking the inventory, picking up items, sheathing/drawing a weapon will reset the perks anyway.
If PlayerREF.IsOverEncumbered()
_ResetArmorWeightPerk(_00E_Class_Keeper_P05_C_Conditioning)
_ResetArmorWeightPerk(_00E_Class_Vagrant_P05_B_Lightweight)
EndIf
EndFunction
Function FixMoreAffinitiesMod()
{Fixes "More Affinites" mod missing properties in the Levelsystem scripts}
_00E_QuestFunctions QuestFunctionsScript = (Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest) as _00E_QuestFunctions
If QuestFunctionsScript._00E_RemoveAllItems_TrashContainer == NONE
Debug.Messagebox("Found broken scripts caused by mod >>More Affinities<<. Press OK to fix scripts.")
_00E_ConfigMenu ConfigMenuScript = (Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest) as _00E_ConfigMenu
ConfigMenuScript.controlQuest = (Game.GetFormFromFile(0x0101EC71, "Enderal - Forgotten Stories.esm") as Quest) as _FS_Phasmalist_ControlQuest
ConfigMenuScript._00E_ConfigMenu_DisableCraftingTutorials = Game.GetFormFromFile(0x00046D8E, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_DisableMenuTutorials = Game.GetFormFromFile(0x00046D8A, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_DisableOtherTutorials = Game.GetFormFromFile(0x00046D8F, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_DisableQuestTutorials = Game.GetFormFromFile(0x00046D8C, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_DisableReadAloudBooks = Game.GetFormFromFile(0x0102E982, "Enderal - Forgotten Stories.esm") as Message
ConfigMenuScript._00E_ConfigMenu_DisableSkillTutorials = Game.GetFormFromFile(0x00046D8D, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_GameplayOptions = Game.GetFormFromFile(0x0102F1BC, "Enderal - Forgotten Stories.esm") as Message
ConfigMenuScript._00E_ConfigMenu_Meditate = Game.GetFormFromFile(0x00046D98, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_OtherOptions = Game.GetFormFromFile(0x00046D89, "Skyrim.esm") as Message
ConfigMenuScript._00E_ConfigMenu_VideoSkip = Game.GetFormFromFile(0x0102E983, "Enderal - Forgotten Stories.esm") as Message
ConfigMenuScript._00E_DisableCraftingTutorials = Game.GetFormFromFile(0x00046D90, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_DisableMenuTutorials = Game.GetFormFromFile(0x00046D8B, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_DisableOtherTutorials = Game.GetFormFromFile(0x00046D93, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_DisableQuestTutorials = Game.GetFormFromFile(0x00046D92, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_DisableReadAloudBooks = Game.GetFormFromFile(0x0102E984, "Enderal - Forgotten Stories.esm") as GlobalVariable
ConfigMenuScript._00E_DisableSkillTutorials = Game.GetFormFromFile(0x00046D91, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_FS_ConfigMenu_Mount_Teleport = Game.GetFormFromFile(0x0102F1B9, "Enderal - Forgotten Stories.esm") as Message
ConfigMenuScript._00E_FS_ConfigMenu_Phasmalist_Teleport = Game.GetFormFromFile(0x0101F2B6, "Enderal - Forgotten Stories.esm") as Message
ConfigMenuScript._00E_FS_IsForgottenStoriesActivated = Game.GetFormFromFile(0x0004320E, "Skyrim.esm") as GlobalVariable
ConfigMenuScript._00E_HorseFlute_New = ((Game.GetFormFromFile(0x000725BA, "Skyrim.esm") as Quest).GetAliasByName("HorseFlute")) as _00E_Horseflute_SC
ConfigMenuScript._00E_VideoSkip = Game.GetFormFromFile(0x0102E985, "Enderal - Forgotten Stories.esm") as GlobalVariable
QuestFunctionsScript.BastionPerks = Game.GetFormFromFile(0x0006686B, "Skyrim.esm") as Formlist
QuestFunctionsScript.DerwishPerks = Game.GetFormFromFile(0x0006686D, "Skyrim.esm") as Formlist
QuestFunctionsScript.ElementalismPerks = Game.GetFormFromFile(0x00066875, "Skyrim.esm") as Formlist
QuestFunctionsScript.EspionagePerks = Game.GetFormFromFile(0x00066889, "Skyrim.esm") as Formlist
QuestFunctionsScript.GameHour = Game.GetFormFromFile(0x00000038, "Skyrim.esm") as GlobalVariable
QuestFunctionsScript.Gold001 = Game.GetFormFromFile(0x0000000f, "Skyrim.esm") as MiscObject
QuestFunctionsScript.LifeAndDeathPerks = Game.GetFormFromFile(0x00066873, "Skyrim.esm") as Formlist
QuestFunctionsScript.MAGIllusionCharm = Game.GetFormFromFile(0x00075805, "Skyrim.esm") as Sound
QuestFunctionsScript.ManipulationPerks = Game.GetFormFromFile(0x0006686A, "Skyrim.esm") as Formlist
QuestFunctionsScript.PlayerSkillMenu = ((Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest).GetAliasByName("Player") as Alias) as _00E_Game_SkillmenuSC
QuestFunctionsScript.RagePerks = Game.GetFormFromFile(0x00066887, "Skyrim.esm") as Formlist
QuestFunctionsScript.SympathyEsme = Game.GetFormFromFile(0x0102A498, "Enderal - Forgotten Stories.esm") as GlobalVariable
QuestFunctionsScript.TrickeryPerks = Game.GetFormFromFile(0x0006687F, "Skyrim.esm") as Formlist
QuestFunctionsScript.VagabondPerks = Game.GetFormFromFile(0x00066877, "Skyrim.esm") as Formlist
QuestFunctionsScript._00E_AchievementsEnabled = Game.GetFormFromFile(0x00046F83, "Skyrim.esm") as GlobalVariable
QuestFunctionsScript._00E_AllAmmos = Game.GetFormFromFile(0x000456C0, "Skyrim.esm") as Formlist
QuestFunctionsScript._00E_ArmorSetScript_sSetBonusRemoved = Game.GetFormFromFile(0x00036F96, "Skyrim.esm") as Message
QuestFunctionsScript._00E_DisableQuestTutorials = Game.GetFormFromFile(0x00046D92, "Skyrim.esm") as GlobalVariable
QuestFunctionsScript._00E_DisableSkillTutorials = Game.GetFormFromFile(0x00046D91, "Skyrim.esm") as GlobalVariable
QuestFunctionsScript._00E_FS_A3_AlreadyKnowThisLevel = Game.GetFormFromFile(0x0102F533, "Enderal - Forgotten Stories.esm") as Message
QuestFunctionsScript._00E_FS_A3_NeedToLearnOtherLevels = Game.GetFormFromFile(0x0101EC7D, "Enderal - Forgotten Stories.esm") as Message
QuestFunctionsScript._00E_FS_A3_sIn = Game.GetFormFromFile(0x00043BE0, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_A3_sMageClassName = Game.GetFormFromFile(0x00043BE4, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_A3_sRogueClassName = Game.GetFormFromFile(0x00043BE3, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_A3_sToUnlockThisClass = Game.GetFormFromFile(0x00043BE1, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_A3_sWarriorClassName = Game.GetFormFromFile(0x00043BE2, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_A3_sYouNeedSkillpoints = Game.GetFormFromFile(0x00043BDF, "Skyrim.esm") as Message
QuestFunctionsScript._00E_FS_NQ02_Esme = Game.GetFormFromFile(0x0101F0D0, "Enderal - Forgotten Stories.esm") as ActorBase
QuestFunctionsScript._00E_FS_NQR05_SlowMotionSP = Game.GetFormFromFile(0x0102E2BD, "Enderal - Forgotten Stories.esm") as Spell
QuestFunctionsScript._00E_FS_NQR05_SlowMotion_IntroM = Game.GetFormFromFile(0x0102E2BF, "Enderal - Forgotten Stories.esm") as Sound
QuestFunctionsScript._00E_FS_NQR05_SlowMotion_OutroM = Game.GetFormFromFile(0x0102E2C1, "Enderal - Forgotten Stories.esm") as Sound
QuestFunctionsScript._00E_Levelsystem_sAbilityStanceQyrai = Game.GetFormFromFile(0x00046D9B, "Skyrim.esm") as Message
QuestFunctionsScript._00E_Levelsystem_sAbilityStanceSkaragg = Game.GetFormFromFile(0x00046D9C, "Skyrim.esm") as Message
QuestFunctionsScript._00E_PleaseRemoveMoney = Game.GetFormFromFile(0x000480DA, "Skyrim.esm") as Message
QuestFunctionsScript._00E_RemoveAllItems_TrashContainer = Game.GetFormFromFile(0x000469E7, "Skyrim.esm") as ObjectReference
QuestFunctionsScript._00E_SkillbookWarning = Game.GetFormFromFile(0x00031ACF, "Skyrim.esm") as Message
_00E_Game_SkillmenuSC SkillMenuScript = ((Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest).GetAliasByName("Player") as Alias) as _00E_Game_SkillmenuSC
SkillMenuScript._00E_FS_Game_Affinity_Spectralist = Game.GetFormFromFile(0x01029A35, "Skyrim.esm") as Message
_00E_PlayerHousing_CellNameSC CellNameScript = ((Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest).GetAliasByName("Player") as Alias) as _00E_PlayerHousing_CellNameSC
CellNameScript.FS_NQR03 = Game.GetFormFromFile(0x0014CEA2, "Skyrim.esm") as Quest
CellNameScript.FS_NQR03_RhalataTemple = Game.GetFormFromFile(0x0010D1C2, "Skyrim.esm") as Cell
CellNameScript._00E_sPlayerHouseMarketQuarterName = Game.GetFormFromFile(0x00047CA5, "Skyrim.esm") as Message
CellNameScript._00E_sPlayerHouseNobleQuarterName = Game.GetFormFromFile(0x00047CA6, "Skyrim.esm") as Message
CellNameScript._00E_sRhalataTempleName = Game.GetFormFromFile(0x00047C29, "Skyrim.esm") as Message
_00E_WeatherControlScriptSC WeatherControlScript = ((Game.GetFormFromFile(0x00010AA2, "Skyrim.esm") as Quest).GetAliasByName("Player") as Alias) as _00E_WeatherControlScriptSC
WeatherControlScript.CapitalCityCastleWorld = Game.GetFormFromFile(0x00070729, "Skyrim.esm") as WorldSpace
WeatherControlScript.CapitalCityLocation = Game.GetFormFromFile(0x000A1A12, "Skyrim.esm") as Location
WeatherControlScript.MQ09 = Game.GetFormFromFile(0x0007FA91, "Skyrim.esm") as Quest
WeatherControlScript.MQ12b = Game.GetFormFromFile(0x0002EBAD, "Skyrim.esm") as Quest
WeatherControlScript.MQ17 = Game.GetFormFromFile(0x0007FA93, "Skyrim.esm") as Quest
WeatherControlScript.SkyrimOvercastRain = Game.GetFormFromFile(0x000C821F, "Skyrim.esm") as Weather
WeatherControlScript.Vyn = Game.GetFormFromFile(0x00001D3C, "Skyrim.esm") as WorldSpace
WeatherControlScript._00E_EnderalOvercast = Game.GetFormFromFile(0x00072785, "Skyrim.esm") as Weather
WeatherControlScript._00E_MQ11c_SilberhainDeadWeather = Game.GetFormFromFile(0x00096807, "Skyrim.esm") as GlobalVariable
WeatherControlScript._00E_SuntempleLocations = Game.GetFormFromFile(0x0003BB5B, "Skyrim.esm") as FormList
Utility.Wait(1)
Debug.Messagebox("Scripts fixed. Make sure to save the game. Restart the client and reload the save that you just created.\n If you have set items equipped, unequip them all and re-equip them for potential set bonuses to apply.")
EndIf
EndFunction
;=====================================================================================
; MAINTENANCE
;=====================================================================================
Function Maintenance()
If fPatchVersion <= 1.25 && !bdoOnce
int iButton01 = _00E_Game_OldSaves_01.Show()
If iButton01 == 0
Game.QuitToMainMenu()
ElseIf iButton01 == 1
int iButton02 = _00E_Game_OldSaves_02.Show()
If iButton02 == 0
Game.QuitToMainMenu()
ElseIf iButton02 == 1
bdoOnce = true
EndIf
EndIf
ElseIf fPatchVersion >= 1.5
; only do this once when update 1.5.6.0 is applied
If fPatchVersion < 1.56
ResetFSNQR05Temple()
EndIf
; only do this once when update 1.5.7.0 is applied
If fPatchVersion < 1.57
CleanMQ12bGhostFlags()
EndIf
; only do this once when update 1.5.8.0 is applied
If fPatchVersion < 1.58
ResetAuroraOnLoad()
DisableMQ12bPanicTriggerbox()
ReAddDarkKeeperAffinity()
ReAddFuryDrivenPerk()
UpdateLivingTempleTrigger()
UpdateMQ11a()
EndIf
; only do this once when update 1.6.0.0 is applied
If fPatchVersion < 1.60
UpdatePhasmalistContainer()
UpdatePassengerBookAtShipwreck()
ResetMQ02Riddle()
EndIf
; only do this once when update 1.6.1.0 is applied
If fPatchVersion < 1.61
UpdateMQ02()
EndIf
; only do this once when update 1.6.2.0 is applied
If fPatchVersion < 1.62
UpdateItemHandler()
EndIf
; only do this once when update 2.0.6 (SE) is applied
If fPatchVersion < 2.06
UpdateMQ12b_206()
EndIf
; only do this once when update 2.0.8 (SE) is applied
If fPatchVersion < 2.08
Update_208()
EndIf
fPatchVersion = CURRENT_PATCH_VERSION
EndIf
; changes to the actor value healrate will not persist in consecutive saves
; every time a save gets loaded the healrate needs to be set to 0, otherwise it will go back again to default at 0.7
; this is called before active magic effects of potions or spells are applied to the player which could also alter the value
PlayerREF.SetActorValue("Healrate", 0)
EnableDisableKillmove()
ResetArmorWeightPerks()
SetAmountAutosaves()
SetAutoSaveInterval()
FailsafeMQ05PrologueAliases()
RefreshMountNamesOnLoad()
; fixes properties that were accidentally set to NONE by the "More Affinities" mod
If Game.GetModByName("Enderal_FS_More_Affinities.esp") != 255
FixMoreAffinitiesMod()
EndIf
EndFunction
;=====================================================================================
; PROPERTIES
;=====================================================================================
float fPatchVersion
bool bdoOnce = false
bool bFSWasNotLoadedBefore = false
_00E_MQ05Prologue_Functions Property MQ05PrologueFunctions Auto
Perk Property _00E_FS_Alchemy_BalancingPerk Auto
Perk Property _00E_FS_Alchemy_BalancingPerk_RestorePotions Auto
Spell Property _00E_AbBlockWaiting Auto
Actor Property PlayerREF Auto
FormList Property QuestsToStart Auto
FormList Property FSQuestsToStartFailsafePatch1560 Auto
Message Property _00E_Game_OldSaves_01 Auto
Message Property _00E_Game_OldSaves_02 Auto
Message Property _00E_Game_ForgottenStoriesNotLoaded Auto
GlobalVariable Property KillMove Auto
Perk Property _00E_Class_Keeper_P05_C_Conditioning Auto
Perk Property _00E_Class_Vagrant_P05_B_Lightweight Auto