diff --git a/Black light locked gates.esp b/Black light locked gates.esp new file mode 100644 index 00000000..1e25c809 Binary files /dev/null and b/Black light locked gates.esp differ diff --git a/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.pex b/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.pex new file mode 100644 index 00000000..a6bd48a3 Binary files /dev/null and b/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.pex differ diff --git a/scripts/PRKF__00E_LockpickingReqPerk_030039BA.pex b/scripts/PRKF__00E_LockpickingReqPerk_030039BA.pex index 8b4b4388..4c81683a 100644 Binary files a/scripts/PRKF__00E_LockpickingReqPerk_030039BA.pex and b/scripts/PRKF__00E_LockpickingReqPerk_030039BA.pex differ diff --git a/scripts/_00e_mq12b_functions.pex b/scripts/_00e_mq12b_functions.pex index cc46a986..7d8c4c4c 100644 Binary files a/scripts/_00e_mq12b_functions.pex and b/scripts/_00e_mq12b_functions.pex differ diff --git a/source/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.psc b/source/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.psc new file mode 100644 index 00000000..4c7d6a32 --- /dev/null +++ b/source/scripts/PRKF__00E_ArkSiegeLockedGate_0300146D.psc @@ -0,0 +1,15 @@ +;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment +;NEXT FRAGMENT INDEX 3 +Scriptname PRKF__00E_ArkSiegeLockedGate_0300146D Extends Perk Hidden + +;BEGIN FRAGMENT Fragment_1 +Function Fragment_1(ObjectReference akTargetRef, Actor akActor) +;BEGIN CODE +_00E_sDoorLocked.Show() +;END CODE +EndFunction +;END FRAGMENT + +;END FRAGMENT CODE - Do not edit anything between this and the begin comment + +Message Property _00E_sDoorLocked Auto diff --git a/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc b/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc index e5784687..2f4dafc8 100644 --- a/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc +++ b/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc @@ -2,14 +2,6 @@ ;NEXT FRAGMENT INDEX 2 Scriptname PRKF__00E_LockpickingReqPerk_030039BA Extends Perk Hidden -;BEGIN FRAGMENT Fragment_1 -Function Fragment_1(ObjectReference akTargetRef, Actor akActor) -;BEGIN CODE -_00E_sDoorLocked.Show() -;END CODE -EndFunction -;END FRAGMENT - ;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akTargetRef, Actor akActor) ;BEGIN CODE diff --git a/source/scripts/_00e_mq12b_functions.psc b/source/scripts/_00e_mq12b_functions.psc index 567494e7..1401f498 100644 --- a/source/scripts/_00e_mq12b_functions.psc +++ b/source/scripts/_00e_mq12b_functions.psc @@ -3,7 +3,7 @@ Scriptname _00E_MQ12b_Functions extends Quest Conditional Import Utility ;===================================================================================== -; GENERAL FUNCTIONS +; GENERAL FUNCTIONS ;===================================================================================== Int CurScriptVersion = 0 @@ -17,374 +17,375 @@ Int nRegisteredGhostedNPCs Bool bGhostedNPCsLocked Function PrepareNPC(Actor akMoveActor, Bool bOnlyGhost = False) - If bArkUnderAttackPrelude == False - Return - EndIf - - ; Validate akMoveActor, could receive "nullptr form" instead of a valid actor from the packages - If akMoveActor == None || akMoveActor.GetActorBase() == None - Return - EndIf - - If akMoveActor.IsDisabled() - Return - EndIf - - If bOnlyGhost == False && akMoveActor.GetEnableParent() == None - akMoveActor.Disable() - _RegisterDisabledNPC(akMoveActor) - Return - EndIf - - If akMoveActor.IsGhost() == False - akMoveActor.SetGhost(True) - _RegisterGhostedNPC(akMoveActor) - Return - EndIf + If bArkUnderAttackPrelude == False + Return + EndIf + + ; Validate akMoveActor, could receive "nullptr form" instead of a valid actor from the packages + If akMoveActor == None || akMoveActor.GetActorBase() == None + Return + EndIf + + If akMoveActor.IsDisabled() + Return + EndIf + + If bOnlyGhost == False && akMoveActor.GetEnableParent() == None + akMoveActor.Disable() + _RegisterDisabledNPC(akMoveActor) + Return + EndIf + + If akMoveActor.IsGhost() == False + akMoveActor.SetGhost(True) + _RegisterGhostedNPC(akMoveActor) + Return + EndIf EndFunction Function _RegisterDisabledNPC(Actor akMoveActor) - While bDisabledNPCsLocked - Utility.WaitMenuMode(0.1) - EndWhile - - bDisabledNPCsLocked = True - - If RegisteredDisabledNPCs.Length == 0 ; Version update - RegisteredDisabledNPCs = New Actor[128] - nRegisteredDisabledNPCs = 0 - EndIf - If RegisteredDisabledNPCs.Find(akMoveActor) < 0 - If nRegisteredDisabledNPCs >= RegisteredDisabledNPCs.Length - Debug.Notification("MQ12b has problems: reached the limit of stored disabled NPCs") - Else - RegisteredDisabledNPCs[nRegisteredDisabledNPCs] = akMoveActor - nRegisteredDisabledNPCs += 1 - EndIf - EndIf - - bDisabledNPCsLocked = False + While bDisabledNPCsLocked + Utility.WaitMenuMode(0.1) + EndWhile + + bDisabledNPCsLocked = True + + If RegisteredDisabledNPCs.Length == 0 ; Version update + RegisteredDisabledNPCs = New Actor[128] + nRegisteredDisabledNPCs = 0 + EndIf + If RegisteredDisabledNPCs.Find(akMoveActor) < 0 + If nRegisteredDisabledNPCs >= RegisteredDisabledNPCs.Length + Debug.Notification("MQ12b has problems: reached the limit of stored disabled NPCs") + Else + RegisteredDisabledNPCs[nRegisteredDisabledNPCs] = akMoveActor + nRegisteredDisabledNPCs += 1 + EndIf + EndIf + + bDisabledNPCsLocked = False EndFunction Function _RegisterGhostedNPC(Actor akMoveActor) - While bGhostedNPCsLocked - Utility.WaitMenuMode(0.1) - EndWhile - - bGhostedNPCsLocked = True - - If RegisteredGhostedNPCs.Length == 0 ; Version update - RegisteredGhostedNPCs = New Actor[128] - nRegisteredGhostedNPCs = 0 - EndIf - If RegisteredGhostedNPCs.Find(akMoveActor) < 0 - If nRegisteredGhostedNPCs >= RegisteredGhostedNPCs.Length - Debug.Notification("MQ12b has problems: reached the limit of stored ghosted NPCs") - Else - RegisteredGhostedNPCs[nRegisteredGhostedNPCs] = akMoveActor - nRegisteredGhostedNPCs += 1 - EndIf - EndIf - - bGhostedNPCsLocked = False + While bGhostedNPCsLocked + Utility.WaitMenuMode(0.1) + EndWhile + + bGhostedNPCsLocked = True + + If RegisteredGhostedNPCs.Length == 0 ; Version update + RegisteredGhostedNPCs = New Actor[128] + nRegisteredGhostedNPCs = 0 + EndIf + If RegisteredGhostedNPCs.Find(akMoveActor) < 0 + If nRegisteredGhostedNPCs >= RegisteredGhostedNPCs.Length + Debug.Notification("MQ12b has problems: reached the limit of stored ghosted NPCs") + Else + RegisteredGhostedNPCs[nRegisteredGhostedNPCs] = akMoveActor + nRegisteredGhostedNPCs += 1 + EndIf + EndIf + + bGhostedNPCsLocked = False EndFunction Function ReEnableNPCs() - Int Index - ObjectReference ref + Int Index + ObjectReference ref - Index = 0 - While Index < nRegisteredDisabledNPCs - RegisteredDisabledNPCs[Index].EnableNoWait() - RegisteredDisabledNPCs[Index] = None - Index += 1 - EndWhile + Index = 0 + While Index < nRegisteredDisabledNPCs + RegisteredDisabledNPCs[Index].EnableNoWait() + RegisteredDisabledNPCs[Index] = None + Index += 1 + EndWhile - RegisteredDisabledNPCs = New Actor[1] + RegisteredDisabledNPCs = New Actor[1] - Index = 0 - While Index < nRegisteredGhostedNPCs - RegisteredGhostedNPCs[Index].SetGhost(False) - RegisteredGhostedNPCs[Index] = None - Index += 1 - EndWhile + Index = 0 + While Index < nRegisteredGhostedNPCs + RegisteredGhostedNPCs[Index].SetGhost(False) + RegisteredGhostedNPCs[Index] = None + Index += 1 + EndWhile - RegisteredGhostedNPCs = New Actor[1] + RegisteredGhostedNPCs = New Actor[1] - ; Old ways of enabling NPCs, for backward compatibility - OldReenableDisabledNPC() - If CurScriptVersion == 0 - _00E_Func_ReferenceFormList.Enable(MQ12b_SC11_NPCsRef) + ; Old ways of enabling NPCs, for backward compatibility + OldReenableDisabledNPC() + If CurScriptVersion == 0 + _00E_Func_ReferenceFormList.Enable(MQ12b_SC11_NPCsRef) - MQ12b_SiegeNPCs.Revert() + MQ12b_SiegeNPCs.Revert() OldRemoveGhostFlag() - EndIf + EndIf EndFunction Function OldReenableDisabledNPC() ; For version updates with CurScriptVersion < 2 - If CurScriptVersion < 2 - _00E_Func_ReferenceFormList.Enable(MQ12b_AllDisabledNPCs) - EndIf + If CurScriptVersion < 2 + _00E_Func_ReferenceFormList.Enable(MQ12b_AllDisabledNPCs) + EndIf EndFunction Function OldRemoveGhostFlag() ; For version updates with CurScriptVersion == 0 If CurScriptVersion == 0 && Self.IsCompleted() == 1 int Index = MQ12b_UnGhostNPCs_OnVersionUpdate1580.GetSize() - While Index > 0 - Index -= 1 - (MQ12b_UnGhostNPCs_OnVersionUpdate1580.GetAt(Index) as Actor).SetGhost(False) - EndWhile + While Index > 0 + Index -= 1 + (MQ12b_UnGhostNPCs_OnVersionUpdate1580.GetAt(Index) as Actor).SetGhost(False) + EndWhile EndIf EndFunction ;===================================================================================== -; FUNCTIONS +; FUNCTIONS ;===================================================================================== Function SetUp() - iCrimeGoldBeforeMQ12bNonViolent = A_CrimeFaction.GetCrimeGoldNonViolent() - iCrimeGoldBeforeMQ12bViolent = A_CrimeFaction.GetCrimeGoldViolent() - - A_CrimeFaction.SetCrimeGold(0) - A_CrimeFaction.SetCrimeGoldViolent(0) - _00E_MC_JorrekRef.Disable() - _00E_MC_TealorREF.EquipItem(_01E_20Hueterschwert, true, true) - _00E_MC_YuslanRef.Disable() - _00E_SilenceLongTransitionHighPriority.Add() - MQ03_SC1_CastleWorldDoor.BlockActivation(True) - _00E_SouthQuarter_UndercityDoorREF.BlockActivation(True) - MQ12b_SC4_BarracksDoorREF.BlockActivation(True) - MQ12b_SC5_HarborDoorREF.BlockActivation(True) + iCrimeGoldBeforeMQ12bNonViolent = A_CrimeFaction.GetCrimeGoldNonViolent() + iCrimeGoldBeforeMQ12bViolent = A_CrimeFaction.GetCrimeGoldViolent() + + A_CrimeFaction.SetCrimeGold(0) + A_CrimeFaction.SetCrimeGoldViolent(0) + _00E_MC_JorrekRef.Disable() + _00E_MC_TealorREF.EquipItem(_01E_20Hueterschwert, true, true) + _00E_MC_YuslanRef.Disable() + _00E_SilenceLongTransitionHighPriority.Add() + MQ03_SC1_CastleWorldDoor.BlockActivation(True) + _00E_SouthQuarter_UndercityDoorREF.BlockActivation(True) + MQ12b_SC4_BarracksDoorREF.BlockActivation(True) + MQ12b_SC5_HarborDoorREF.BlockActivation(True) CapitalCity_UpperCityToMarket01.BlockActivation(True) CapitalCity_UpperCityToMarket02.BlockActivation(True) - MQ12b_Market_CastleCollisionREF.Enable() + MQ12b_Market_CastleCollisionREF.Enable() MQ12b_DisableThisDudeHeIsAnnoyingREF.Disable() - _00E_TeleportGlobal.SetValueInt(1) - PlayerREF.AddToFaction(MQ12b_TemporarySiegeFaction) + _00E_TeleportGlobal.SetValueInt(1) + PlayerREF.AddToFaction(MQ12b_TemporarySiegeFaction) + PlayerREF.AddPerk(_00E_ArkSiegeLockedGatesPerk) Ordenshueter.GetReference().Enable() - Ordenshueter.GetReference().MoveTo(MQ12b_SC1_Orderguard01) - Ordenshueterin.GetReference().MoveTo(MQ12b_SC1_Orderguard02) + Ordenshueter.GetReference().MoveTo(MQ12b_SC1_Orderguard01) + Ordenshueterin.GetReference().MoveTo(MQ12b_SC1_Orderguard02) - CurScriptVersion = LATEST_SCRIPT_VERSION - RegisteredDisabledNPCs = New Actor[128] - nRegisteredDisabledNPCs = 0 - RegisteredGhostedNPCs = New Actor[128] - nRegisteredGhostedNPCs = 0 + CurScriptVersion = LATEST_SCRIPT_VERSION + RegisteredDisabledNPCs = New Actor[128] + nRegisteredDisabledNPCs = 0 + RegisteredGhostedNPCs = New Actor[128] + nRegisteredGhostedNPCs = 0 - bArkUnderAttackPrelude = True + bArkUnderAttackPrelude = True - SkyrimOvercastRain.SetActive(True) - _00E_MC_LexREF.EvaluatePackage() + SkyrimOvercastRain.SetActive(True) + _00E_MC_LexREF.EvaluatePackage() - AdjustTime() - + AdjustTime() + EndFunction Function BlockDoors() - int iIndex = MQ12b_SC01_ArkDoors.GetSize() - - While iIndex > 0 - iIndex -= 1 - ObjectReference objDoorToBlock = MQ12b_SC01_ArkDoors.GetAt(iIndex) as ObjectReference - objDoorToBlock.BlockActivation(True) - EndWhile - + int iIndex = MQ12b_SC01_ArkDoors.GetSize() + + While iIndex > 0 + iIndex -= 1 + ObjectReference objDoorToBlock = MQ12b_SC01_ArkDoors.GetAt(iIndex) as ObjectReference + objDoorToBlock.BlockActivation(True) + EndWhile + EndFunction Function StartSC02Failsave() - iCrimeGoldBeforeMQ12bNonViolent = A_CrimeFaction.GetCrimeGoldNonViolent() - iCrimeGoldBeforeMQ12bViolent = A_CrimeFaction.GetCrimeGoldViolent() - - If Self.GetCurrentStageID() < 15 - Self.SetCurrentStageID(15) - EndIf - - If _00E_MC_LeoraREF.IsDisabled() - _00E_MC_LeoraREF.Enable() - EndIf - - If _00E_MC_YuslanRef.IsDisabled() - _00E_MC_YuslanRef.Enable() - EndIf - - Utility.Wait(0.25) - - _00E_MC_LeoraREF.MoveTo(MQ12b_SC2_LeoraMarker002) - _00E_MC_YuslanRef.MoveTo(MQ12b_SC2_ShaRimMarker002) - - If !MQ12b_SC2_Attack.IsPlaying() - MQ12b_SC2_Attack.ForceStart() - EndIf - + iCrimeGoldBeforeMQ12bNonViolent = A_CrimeFaction.GetCrimeGoldNonViolent() + iCrimeGoldBeforeMQ12bViolent = A_CrimeFaction.GetCrimeGoldViolent() + + If Self.GetCurrentStageID() < 15 + Self.SetCurrentStageID(15) + EndIf + + If _00E_MC_LeoraREF.IsDisabled() + _00E_MC_LeoraREF.Enable() + EndIf + + If _00E_MC_YuslanRef.IsDisabled() + _00E_MC_YuslanRef.Enable() + EndIf + + Utility.Wait(0.25) + + _00E_MC_LeoraREF.MoveTo(MQ12b_SC2_LeoraMarker002) + _00E_MC_YuslanRef.MoveTo(MQ12b_SC2_ShaRimMarker002) + + If !MQ12b_SC2_Attack.IsPlaying() + MQ12b_SC2_Attack.ForceStart() + EndIf + EndFunction Function StartSC02() - If _00E_MC_LeoraREF.IsDisabled() - _00E_MC_LeoraREF.Enable() - EndIf - - If _00E_MC_YuslanRef.IsDisabled() - _00E_MC_YuslanRef.Enable() - EndIf - - SkyrimOvercastRain.SetActive(True) - _00E_MC_LeoraREF.MoveTo(MQ12b_SC2_LeoraMarker002) - _00E_MC_YuslanRef.MoveTo(MQ12b_SC2_ShaRimMarker002) - MQ12b_SC2_Attack.ForceStart() - + If _00E_MC_LeoraREF.IsDisabled() + _00E_MC_LeoraREF.Enable() + EndIf + + If _00E_MC_YuslanRef.IsDisabled() + _00E_MC_YuslanRef.Enable() + EndIf + + SkyrimOvercastRain.SetActive(True) + _00E_MC_LeoraREF.MoveTo(MQ12b_SC2_LeoraMarker002) + _00E_MC_YuslanRef.MoveTo(MQ12b_SC2_ShaRimMarker002) + MQ12b_SC2_Attack.ForceStart() + EndFunction Function TealorAppears() - - If _00E_MC_TealorRef.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf - - _00E_SilenceLongTransitionHighPriority.Add() - AllowIdleChatter.SetValue(0) - _00E_MC_TealorREF.MoveTo(MQ12b_SC2_TealorStartMarker005) - - Utility.Wait(0.5) - - If _00E_MC_TealorREF.GetWorldSpace() == PlayerREF.GetWorldSpace() - _00E_MC_TealorREF.MoveTo(MQ12b_SC2_TealorStartMarker005) - EndIf + + If _00E_MC_TealorRef.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf + + _00E_SilenceLongTransitionHighPriority.Add() + AllowIdleChatter.SetValue(0) + _00E_MC_TealorREF.MoveTo(MQ12b_SC2_TealorStartMarker005) + + Utility.Wait(0.5) + + If _00E_MC_TealorREF.GetWorldSpace() == PlayerREF.GetWorldSpace() + _00E_MC_TealorREF.MoveTo(MQ12b_SC2_TealorStartMarker005) + EndIf EndFunction Function SC02_TealorFailsave() - ; Failsave to move Tealor to the scene in the upper quarters - ; where Yuslan is arguing with Leora about the magical blockade. + ; Failsave to move Tealor to the scene in the upper quarters + ; where Yuslan is arguing with Leora about the magical blockade. - If _00E_MC_TealorREF.GetDistance(_00E_MC_YuslanRef) > 198 - Wait(1) - If _00E_MC_TealorREF.GetDistance(_00E_MC_YuslanRef) > 198 - _00E_MC_TealorREF.MoveTo(MQ12b_SC2_ShaRimMarker002) - Endif - EndIf + If _00E_MC_TealorREF.GetDistance(_00E_MC_YuslanRef) > 198 + Wait(1) + If _00E_MC_TealorREF.GetDistance(_00E_MC_YuslanRef) > 198 + _00E_MC_TealorREF.MoveTo(MQ12b_SC2_ShaRimMarker002) + Endif + EndIf EndFunction Function StartSC03() - _00E_SilenceLongTransitionHighPriority.Remove() - _00E_Music_Combat_BonehunterNoCond.Add() - - If _00E_MC_LeoraREF.IsDisabled() - _00E_MC_LeoraREF.Enable() - EndIf - - If _00E_MC_YuslanRef.IsDisabled() - _00E_MC_YuslanRef.Enable() - EndIf - - If _00E_MC_TealorRef.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf - - MQ12b_SC3_CityGuardREF.Enable() - MQ12b_SC3_CityGuardREF.MoveTo(MQ12b_SC3_CityGuardStartMarker) - - MQ12b_SC3_CatapultAttack.ForceStart() - - AMBrCivilWarCatapultsDistantM.Play(PlayerREF) - ObjectReference CatapultStrike = MQ12b_SC3_CatapultStrikeMarker002.PlaceAtMe(CWCatapultStrike) - - _00E_MC_TealorREF.SetLookAt(CatapultStrike) - _00E_MC_LeoraREF.SetLookAt(CatapultStrike) - _00E_MC_YuslanRef.SetLookAt(CatapultStrike) - - Wait(4) - - _00E_Ability_StaggerSelfSpell.Cast(_00E_MC_YuslanRef,_00E_MC_YuslanRef) - _00E_Ability_StaggerSelfSpell.Cast(_00E_MC_LeoraREF,_00E_MC_LeoraREF) - MQ12b_SC3_BarrierREF002.Enable() - MQ12b_SC3_TealorBarrierMarkerREF.Enable() - - Wait(1) - - LaunchCityAttack() - + _00E_SilenceLongTransitionHighPriority.Remove() + _00E_Music_Combat_BonehunterNoCond.Add() + + If _00E_MC_LeoraREF.IsDisabled() + _00E_MC_LeoraREF.Enable() + EndIf + + If _00E_MC_YuslanRef.IsDisabled() + _00E_MC_YuslanRef.Enable() + EndIf + + If _00E_MC_TealorRef.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf + + MQ12b_SC3_CityGuardREF.Enable() + MQ12b_SC3_CityGuardREF.MoveTo(MQ12b_SC3_CityGuardStartMarker) + + MQ12b_SC3_CatapultAttack.ForceStart() + + AMBrCivilWarCatapultsDistantM.Play(PlayerREF) + ObjectReference CatapultStrike = MQ12b_SC3_CatapultStrikeMarker002.PlaceAtMe(CWCatapultStrike) + + _00E_MC_TealorREF.SetLookAt(CatapultStrike) + _00E_MC_LeoraREF.SetLookAt(CatapultStrike) + _00E_MC_YuslanRef.SetLookAt(CatapultStrike) + + Wait(4) + + _00E_Ability_StaggerSelfSpell.Cast(_00E_MC_YuslanRef,_00E_MC_YuslanRef) + _00E_Ability_StaggerSelfSpell.Cast(_00E_MC_LeoraREF,_00E_MC_LeoraREF) + MQ12b_SC3_BarrierREF002.Enable() + MQ12b_SC3_TealorBarrierMarkerREF.Enable() + + Wait(1) + + LaunchCityAttack() + EndFunction Function LaunchCityAttack() - Game.RequestAutoSave() - SendModEvent("ArkSiegeStarted") - iBellSound = _00E_BellLoop.Play(PlayerREF) - MQ03_SC1_CastleWorldDoor.BlockActivation(True) - MQ12b_SC4_BarracksDoorREF.BlockActivation(True) - _00E_SouthQuarter_UndercityDoorREF.BlockActivation(True) - MQ12b_SC5_HarborDoorREF.BlockActivation(True) - MQ12b_SC5_LowerDistrictMarketDoor01REF.BlockActivation(True) - MQ12b_SC5_LowerDistrictMarketDoor02REF.BlockActivation(True) - EnableMarketProps() - - SkyrimOvercastRain.SetActive(True) - _00E_SilenceLongTransitionHighPriority.Remove() - _00E_Music_Combat_BonehunterNoCond.Add() - _00E_MQ12b_SC3_ScreamM.Play(MQ12b_SC3_ScreamMarker) - AMBCivilWarBattleStartDistant.Play(PlayerREF) - MQ12b_SC3_PanicTriggerboxREF.Enable() - MQ12b_StayDisabledLinker.Disable() - MQ12b_SC3_UpperCityLinker01.Enable() - MQ12b_SC3_CatapultFireController.PlaceAtMe(CWCatapultStrikeNoDmg) - StrikeSpawner = MQ12b_SC3_CatapultFireController - bArkUnderAttack = True - MQ12b_ArkUnderAttack.SetValueInt(1) - RegisterForSingleUpdate(3) - GoToState("SiegeUpperCity") - Wait(1) - MQ12b_SC3_BattleSoundMarker.Enable() - + Game.RequestAutoSave() + SendModEvent("ArkSiegeStarted") + iBellSound = _00E_BellLoop.Play(PlayerREF) + MQ03_SC1_CastleWorldDoor.BlockActivation(True) + MQ12b_SC4_BarracksDoorREF.BlockActivation(True) + _00E_SouthQuarter_UndercityDoorREF.BlockActivation(True) + MQ12b_SC5_HarborDoorREF.BlockActivation(True) + MQ12b_SC5_LowerDistrictMarketDoor01REF.BlockActivation(True) + MQ12b_SC5_LowerDistrictMarketDoor02REF.BlockActivation(True) + EnableMarketProps() + + SkyrimOvercastRain.SetActive(True) + _00E_SilenceLongTransitionHighPriority.Remove() + _00E_Music_Combat_BonehunterNoCond.Add() + _00E_MQ12b_SC3_ScreamM.Play(MQ12b_SC3_ScreamMarker) + AMBCivilWarBattleStartDistant.Play(PlayerREF) + MQ12b_SC3_PanicTriggerboxREF.Enable() + MQ12b_StayDisabledLinker.Disable() + MQ12b_SC3_UpperCityLinker01.Enable() + MQ12b_SC3_CatapultFireController.PlaceAtMe(CWCatapultStrikeNoDmg) + StrikeSpawner = MQ12b_SC3_CatapultFireController + bArkUnderAttack = True + MQ12b_ArkUnderAttack.SetValueInt(1) + RegisterForSingleUpdate(3) + GoToState("SiegeUpperCity") + Wait(1) + MQ12b_SC3_BattleSoundMarker.Enable() + EndFunction Function SoldierFailsave() - if MQ12b_SC3_CityGuardREF.GetDistance(MQ12b_SC3_CityGuardRunToMarker) >= 350 - MQ12b_SC3_CityGuardREF.MoveTo(MQ12b_SC3_CityGuardRunToMarker) - EndIf + if MQ12b_SC3_CityGuardREF.GetDistance(MQ12b_SC3_CityGuardRunToMarker) >= 350 + MQ12b_SC3_CityGuardREF.MoveTo(MQ12b_SC3_CityGuardRunToMarker) + EndIf EndFunction Function StartSC04() - If _00E_MC_TealorRef.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf + If _00E_MC_TealorRef.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, True, 600, 700, 200) - MQ12b_SC3_BarrierREF002.PlayAnimation("TransitionAnim") - MQ12b_SC4_TealorTravelToMistDistrict.ForceStart() + MQ12b_SC3_BarrierREF002.PlayAnimation("TransitionAnim") + MQ12b_SC4_TealorTravelToMistDistrict.ForceStart() - MQ12b_SC3_TealorBarrierMarkerREF.Disable() - CapitalCity_UpperCityToMarket01.BlockActivation(False) + MQ12b_SC3_TealorBarrierMarkerREF.Disable() + CapitalCity_UpperCityToMarket01.BlockActivation(False) CapitalCity_UpperCityToMarket02.BlockActivation(False) EndFunction Function TeleportYuslan() - _00E_PlayerFunctions.GetTeleportControl().TeleportNPC(_00E_MC_YuslanRef, MQ07a_SC14_YoungMageMarker001) + _00E_PlayerFunctions.GetTeleportControl().TeleportNPC(_00E_MC_YuslanRef, MQ07a_SC14_YoungMageMarker001) EndFunction Function UnblockHarborDoor() - MQ12b_SC5_HarborDoorREF.BlockActivation(False) + MQ12b_SC5_HarborDoorREF.BlockActivation(False) EndFunction Function EnableMarketProps() - MQ12b_SC4_Market_Linker.Enable() + MQ12b_SC4_Market_Linker.Enable() EndFunction @@ -393,69 +394,69 @@ Function StartSC05() _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, False) MQ12b_SC3_CityGuardREF.Disable() - _00E_MC_TealorREF.MoveTo(MQ12b_SC4_TealorBenchmark01) - - MQ12b_SC5_TealorLowerDistrict.ForceStart() - - EnableLowerCityProps() - + _00E_MC_TealorREF.MoveTo(MQ12b_SC4_TealorBenchmark01) + + MQ12b_SC5_TealorLowerDistrict.ForceStart() + + EnableLowerCityProps() + EndFunction Function EnableLowerCityProps() - MQ12b_SC5_LowerDistrictLinkMarker.Enable() - MQ12b_SC5_HarlejanLinker.Enable() - + MQ12b_SC5_LowerDistrictLinkMarker.Enable() + MQ12b_SC5_HarlejanLinker.Enable() + EndFunction Function StartSC06() - - Sound.StopInstance(iBellSound) - MQ12b_SC11_GateREF.Enable() + + Sound.StopInstance(iBellSound) + MQ12b_SC11_GateREF.Enable() _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, True, 600, 700, 200) - - If MQ12b_SC11_GateREF.GetOpenState() != 1 - MQ12b_SC11_GateREF.SetOpen(True) - EndIf - - MQ12b_SC6_HarborLinker.Enable() - MQ12c_GuardLinker.Disable() - MQ12b_SC5_HarlejanLinker.Enable() - MQ12b_SC6_NehrimeseGateLinker.Enable() - MQ12b_SC6_HarborProp045.Enable() - _00E_MC_TealorREF.MoveTo(MQ12b_SC5_TealorBenchmark02) - - MQ12b_SC5_HarlejanGuardNaraREF.MoveTo(DebugMarker001) - MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(DebugMarker002) - MQ12b_SC5_HarlejanGuardGidonREF.MoveTo(DebugMarker003) - - MQ12b_SC5_SergeantHarlejanREF.MoveTo(DebugMarker004) - - MQ12b_SC6_BattleInHarborDistrict.ForceStart() + + If MQ12b_SC11_GateREF.GetOpenState() != 1 + MQ12b_SC11_GateREF.SetOpen(True) + EndIf + + MQ12b_SC6_HarborLinker.Enable() + MQ12c_GuardLinker.Disable() + MQ12b_SC5_HarlejanLinker.Enable() + MQ12b_SC6_NehrimeseGateLinker.Enable() + MQ12b_SC6_HarborProp045.Enable() + _00E_MC_TealorREF.MoveTo(MQ12b_SC5_TealorBenchmark02) + + MQ12b_SC5_HarlejanGuardNaraREF.MoveTo(DebugMarker001) + MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(DebugMarker002) + MQ12b_SC5_HarlejanGuardGidonREF.MoveTo(DebugMarker003) + + MQ12b_SC5_SergeantHarlejanREF.MoveTo(DebugMarker004) + + MQ12b_SC6_BattleInHarborDistrict.ForceStart() ; need to disable these guards: if the player ignored them, tealor might aggro them even in the harbor MQ12b_SC4_Market_Linker.Disable() - GypsyMinstrelsControl.TriggerUpdate() - + GypsyMinstrelsControl.TriggerUpdate() + EndFunction Function EnableArchers() - MQ12b_SC6_ArcherMarker.Enable() + MQ12b_SC6_ArcherMarker.Enable() EndFunction Function EnableGateFoes() - MQ12b_SC6_NehrimeseGateLinker.Enable() + MQ12b_SC6_NehrimeseGateLinker.Enable() EndFunction Function SC07_Failsave() - MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(MQ12b_SC11_TealorSpawnMarker) + MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(MQ12b_SC11_TealorSpawnMarker) EndFunction @@ -463,21 +464,21 @@ Function StartSC07() _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, False) - SetObjectiveCompleted(10) - MQ12b_SC5_HarlejanGuardNaraREF.ResetHealthAndLimbs() - MQ12b_SC5_HarlejanGuardYoungREF.ResetHealthAndLimbs() - MQ12b_SC5_HarlejanGuardGidonREF.ResetHealthAndLimbs() - MQ12b_SC5_SergeantHarlejanREF.ResetHealthAndLimbs() - - Wait(1) - - MQ12b_SC7_GateDiscussion.ForceStart() + SetObjectiveCompleted(10) + MQ12b_SC5_HarlejanGuardNaraREF.ResetHealthAndLimbs() + MQ12b_SC5_HarlejanGuardYoungREF.ResetHealthAndLimbs() + MQ12b_SC5_HarlejanGuardGidonREF.ResetHealthAndLimbs() + MQ12b_SC5_SergeantHarlejanREF.ResetHealthAndLimbs() + + Wait(1) + + MQ12b_SC7_GateDiscussion.ForceStart() EndFunction Function PlayStuckSound() - _00E_MQ12b_SC6_GateCrankStuckM.Play(MQ12b_SC7_CrankREF) + _00E_MQ12b_SC6_GateCrankStuckM.Play(MQ12b_SC7_CrankREF) EndFunction @@ -488,79 +489,79 @@ Function StartSC08() _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, True, 600, 700, 200) - MQ12b_SC8_GateDoorREF.Lock(False) - MQ12b_SC8_FollowTealorToWallEntrance.ForceStart() - + MQ12b_SC8_GateDoorREF.Lock(False) + MQ12b_SC8_FollowTealorToWallEntrance.ForceStart() + EndFunction Function ChangeMusic() - SetObjectiveCompleted(15) - _00E_MC_TealorREF.MoveTo(PlayerREF) - _00E_Music_Combat_BonehunterNoCond.Remove() - + SetObjectiveCompleted(15) + _00E_MC_TealorREF.MoveTo(PlayerREF) + _00E_Music_Combat_BonehunterNoCond.Remove() + EndFunction Function StartSC09() _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, False) - MQ12b_SC9_PlayerRepairsMechanism.ForceStart() - MQ12b_SC9_Door.Lock(False) + MQ12b_SC9_PlayerRepairsMechanism.ForceStart() + MQ12b_SC9_Door.Lock(False) EndFunction Function CallVision() - MQ12b_SC09_PlayerVisionMarker = PlayerREF.PlaceAtMe(XMarker, 1) - _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestop() + MQ12b_SC09_PlayerVisionMarker = PlayerREF.PlaceAtMe(XMarker, 1) + _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestop() EndFunction Function EndVision() - _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestopStop() - PlayerREF.MoveTo(MQ12b_SC09_PlayerVisionMarker) - + _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestopStop() + PlayerREF.MoveTo(MQ12b_SC09_PlayerVisionMarker) + EndFunction Function FireCannon() - FXExplosionCatapultFarM.Play(PlayerREF) + FXExplosionCatapultFarM.Play(PlayerREF) EndFunction Function StartSC10() - MQ12b_SC10_PlayerRepairsMechanismPart02.ForceStart() + MQ12b_SC10_PlayerRepairsMechanismPart02.ForceStart() EndFunction Function EnableAssassin() - MQ12b_SC10_WayOut.BlockActivation(False) - InitializeCoordinates(PlayerREF) - MQ12b_SC10_NehrimeseAssassin.Enable() - _00E_A2_Ghostwalk_TeleportSound.Play(PlayerREF) - _00E_A2_GhostwalkTeleportReappearVFX.Play(MQ12b_SC10_NehrimeseAssassin) - MQ12b_SC10_NehrimeseAssassin.PlaceAtMe(_00E_A2_GhostwalkImpactExplosion, 1) - MQ12b_SC10_NehrimeseAssassin.MoveTo(PlayerREF, EndLocX, EndLocY, EndLocZ) - MQ12b_SC10_NehrimeseAssassin.SetAngle(TargetAngleX, TargetAngleY, TargetAngleZ) - _00E_A2_GhostwalkTeleportVFX.Play(MQ12b_SC10_NehrimeseAssassin) - _00E_A2_GhostwalkTeleportReappearVFX.Stop(MQ12b_SC10_NehrimeseAssassin) - MQ12b_SC10_NehrimeseAssassin.StartCombat(PlayerREF) - + MQ12b_SC10_WayOut.BlockActivation(False) + InitializeCoordinates(PlayerREF) + MQ12b_SC10_NehrimeseAssassin.Enable() + _00E_A2_Ghostwalk_TeleportSound.Play(PlayerREF) + _00E_A2_GhostwalkTeleportReappearVFX.Play(MQ12b_SC10_NehrimeseAssassin) + MQ12b_SC10_NehrimeseAssassin.PlaceAtMe(_00E_A2_GhostwalkImpactExplosion, 1) + MQ12b_SC10_NehrimeseAssassin.MoveTo(PlayerREF, EndLocX, EndLocY, EndLocZ) + MQ12b_SC10_NehrimeseAssassin.SetAngle(TargetAngleX, TargetAngleY, TargetAngleZ) + _00E_A2_GhostwalkTeleportVFX.Play(MQ12b_SC10_NehrimeseAssassin) + _00E_A2_GhostwalkTeleportReappearVFX.Stop(MQ12b_SC10_NehrimeseAssassin) + MQ12b_SC10_NehrimeseAssassin.StartCombat(PlayerREF) + EndFunction Function InitializeCoordinates(Actor TargetVictim) - EndLocX = (-100*Math.Sin(TargetVictim.GetAngleZ())) - EndLocY = (-100*Math.Cos(TargetVictim.GetAngleZ())) - EndLocZ = 0 + EndLocX = (-100*Math.Sin(TargetVictim.GetAngleZ())) + EndLocY = (-100*Math.Cos(TargetVictim.GetAngleZ())) + EndLocZ = 0 - TargetAngleX = TargetVictim.GetAngleX() - TargetAngleY = TargetVictim.GetAngleY() - TargetAngleZ = TargetVictim.GetAngleZ() + TargetAngleX = TargetVictim.GetAngleX() + TargetAngleY = TargetVictim.GetAngleY() + TargetAngleZ = TargetVictim.GetAngleZ() EndFunction @@ -568,155 +569,155 @@ EndFunction Function EnableDefenseTroop() - AudioCategoryAMB.SetVolume(0.7) - Weather.ReleaseOverride() - SkyrimStormRain.ForceActive(True) - bArkUnderAttackFinalScene = True - MoveUnwantedNPCs() - - MQ12b_SC11_CannonREF.Enable() - MQ12b_SC6_HarborProp045.Disable() - - If _00E_MC_TealorREF.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf - - _00E_MC_TealorREF.MoveTo(MQ12b_SC11_TealorSpawnMarker) - MQ12b_SC5_HarlejanGuardGidonREF.MoveTo(MQ12b_SC11_GidonCannonMarker) - MQ12b_SC5_HarlejanGuardNaraREF.MoveTo(MQ12b_SC11_NaraCannonMarker) - MQ12b_SC5_SergeantHarlejanREF.MoveTo(MQ12b_SC11_HarlejanCannonMarker) - MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(MQ12b_SC11_YoungGuardCannonMarker) - MQ12b_SC11_SamaelREF.MoveTo(MQ12b_SC11_SamaelMarker) - MQ12b_SC11_SamaelREF.Enable() - MQ12b_SC11_SamaelREF.SetAlpha(0.0) - MQ12b_SC11_CollisionMarker.Enable() - MQ12b_SC11_HarborGateScene.ForceStart() - _00E_SilenceLongTransitionHighPriority.Add() + AudioCategoryAMB.SetVolume(0.7) + Weather.ReleaseOverride() + SkyrimStormRain.ForceActive(True) + bArkUnderAttackFinalScene = True + MoveUnwantedNPCs() + + MQ12b_SC11_CannonREF.Enable() + MQ12b_SC6_HarborProp045.Disable() + + If _00E_MC_TealorREF.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf + + _00E_MC_TealorREF.MoveTo(MQ12b_SC11_TealorSpawnMarker) + MQ12b_SC5_HarlejanGuardGidonREF.MoveTo(MQ12b_SC11_GidonCannonMarker) + MQ12b_SC5_HarlejanGuardNaraREF.MoveTo(MQ12b_SC11_NaraCannonMarker) + MQ12b_SC5_SergeantHarlejanREF.MoveTo(MQ12b_SC11_HarlejanCannonMarker) + MQ12b_SC5_HarlejanGuardYoungREF.MoveTo(MQ12b_SC11_YoungGuardCannonMarker) + MQ12b_SC11_SamaelREF.MoveTo(MQ12b_SC11_SamaelMarker) + MQ12b_SC11_SamaelREF.Enable() + MQ12b_SC11_SamaelREF.SetAlpha(0.0) + MQ12b_SC11_CollisionMarker.Enable() + MQ12b_SC11_HarborGateScene.ForceStart() + _00E_SilenceLongTransitionHighPriority.Add() EndFunction Function MoveUnwantedNPCs() - int iNPCIndex = MQ12b_SC11_NPCsRef.GetSize() - - While iNPCIndex > 0 - - iNPCIndex -= 1 - - Actor RefToMove = MQ12b_SC11_NPCsRef.GetAt(iNPCIndex) as Actor - - If !RefToMove.IsDisabled() && !(RefToMove.IsDead()) - RefToMove.SetGhost(True) - RefToMove.MoveTo(MQ12b_SC11_GuardDumpMarker) - EndIf - - EndWhile - - Return + int iNPCIndex = MQ12b_SC11_NPCsRef.GetSize() + + While iNPCIndex > 0 + + iNPCIndex -= 1 + + Actor RefToMove = MQ12b_SC11_NPCsRef.GetAt(iNPCIndex) as Actor + + If !RefToMove.IsDisabled() && !(RefToMove.IsDead()) + RefToMove.SetGhost(True) + RefToMove.MoveTo(MQ12b_SC11_GuardDumpMarker) + EndIf + + EndWhile + + Return EndFunction Function FadeInSamael() - _00E_SilenceLongTransitionHighPriority.Remove() - _00E_Music_Dungeon_Hideout.Remove() - _00E_Music_Special_MQ12b_Samael.Add() - TimeFadeIn01FXS.Play(MQ12b_SC11_SamaelREF) - MQ12b_SC11_SamaelREF.MoveTo(MQ12b_SC11_SamaelMarker) - Debug.sendAnimationEvent(MQ12b_SC11_SamaelREF, "IdleWebEnterInstant") - MQ12b_SC11_SamaelREF.setActorValue("Variable03", 5) - TimeFadeOut01FXS.Stop(MQ12b_SC11_SamaelREF) - TimeFadeIn01FXS.Play(MQ12b_SC11_SamaelREF) - MQ12b_SC11_SamaelBarrierREF.Enable() - _00E_MAGEldritchExplosionImod.Apply() - Game.ShakeCamera(afStrength = 0.1) - _00E_Func_WaitForRef.WaitForReferenceToLoad(MQ12b_SC11_SamaelBarrierREF) - MAGConjurePortal.Play(MQ12b_SC11_SamaelBarrierREF) - MQ12b_SC11_SamaelBarrierREF.PlayAnimation("playanim02") - bBarrierFailsave = True - RegisterForSingleUpdate(2) - _00E_MQ12b_SC11_BarrierLightREF.Enable() - + _00E_SilenceLongTransitionHighPriority.Remove() + _00E_Music_Dungeon_Hideout.Remove() + _00E_Music_Special_MQ12b_Samael.Add() + TimeFadeIn01FXS.Play(MQ12b_SC11_SamaelREF) + MQ12b_SC11_SamaelREF.MoveTo(MQ12b_SC11_SamaelMarker) + Debug.sendAnimationEvent(MQ12b_SC11_SamaelREF, "IdleWebEnterInstant") + MQ12b_SC11_SamaelREF.setActorValue("Variable03", 5) + TimeFadeOut01FXS.Stop(MQ12b_SC11_SamaelREF) + TimeFadeIn01FXS.Play(MQ12b_SC11_SamaelREF) + MQ12b_SC11_SamaelBarrierREF.Enable() + _00E_MAGEldritchExplosionImod.Apply() + Game.ShakeCamera(afStrength = 0.1) + _00E_Func_WaitForRef.WaitForReferenceToLoad(MQ12b_SC11_SamaelBarrierREF) + MAGConjurePortal.Play(MQ12b_SC11_SamaelBarrierREF) + MQ12b_SC11_SamaelBarrierREF.PlayAnimation("playanim02") + bBarrierFailsave = True + RegisterForSingleUpdate(2) + _00E_MQ12b_SC11_BarrierLightREF.Enable() + EndFunction Function ExplosionSamael() - MQ12b_SC11_SamaelREF.playidle(WebIdleExit) - Wait(1) - TimeFadeIn01FXS.Stop(MQ12b_SC11_SamaelREF) - MQ12b_SC11_SamaelREF.setActorValue("Variable03", 0) - MQ12b_SC11_SamaelREF.PlaceAtMe(_00E_MAGEldritchShockExplosion, 1) - _00E_MAGEldritchExplosionM.Play(MQ12b_SC11_SamaelREF) - _00E_Ability_StaggerSelfSpell.Cast(MQ12b_SC5_HarlejanGuardYoungREF, MQ12b_SC5_HarlejanGuardYoungREF) - _00E_Ability_StaggerSelfSpell.Cast(MQ12b_SC5_SergeantHarlejanREF, MQ12b_SC5_SergeantHarlejanREF) - MQ12b_SC11_SamaelREF.SetAlpha(1) - MQ12b_SC11_SamaelREF.PushActorAway(MQ12b_SC5_HarlejanGuardGidonREF, 5) - MQ12b_SC5_HarlejanGuardGidonREF.GetActorBase().SetEssential(False) - MQ12b_SC5_HarlejanGuardGidonREF.Kill(MQ12b_SC11_SamaelREF) - MQ12b_SC11_SamaelREF.PushActorAway(MQ12b_SC5_HarlejanGuardNaraREF, 5) - MQ12b_SC5_HarlejanGuardNaraREF.GetActorBase().SetEssential(False) - MQ12b_SC5_HarlejanGuardNaraREF.Kill(MQ12b_SC11_SamaelREF) - + MQ12b_SC11_SamaelREF.playidle(WebIdleExit) + Wait(1) + TimeFadeIn01FXS.Stop(MQ12b_SC11_SamaelREF) + MQ12b_SC11_SamaelREF.setActorValue("Variable03", 0) + MQ12b_SC11_SamaelREF.PlaceAtMe(_00E_MAGEldritchShockExplosion, 1) + _00E_MAGEldritchExplosionM.Play(MQ12b_SC11_SamaelREF) + _00E_Ability_StaggerSelfSpell.Cast(MQ12b_SC5_HarlejanGuardYoungREF, MQ12b_SC5_HarlejanGuardYoungREF) + _00E_Ability_StaggerSelfSpell.Cast(MQ12b_SC5_SergeantHarlejanREF, MQ12b_SC5_SergeantHarlejanREF) + MQ12b_SC11_SamaelREF.SetAlpha(1) + MQ12b_SC11_SamaelREF.PushActorAway(MQ12b_SC5_HarlejanGuardGidonREF, 5) + MQ12b_SC5_HarlejanGuardGidonREF.GetActorBase().SetEssential(False) + MQ12b_SC5_HarlejanGuardGidonREF.Kill(MQ12b_SC11_SamaelREF) + MQ12b_SC11_SamaelREF.PushActorAway(MQ12b_SC5_HarlejanGuardNaraREF, 5) + MQ12b_SC5_HarlejanGuardNaraREF.GetActorBase().SetEssential(False) + MQ12b_SC5_HarlejanGuardNaraREF.Kill(MQ12b_SC11_SamaelREF) + EndFunction Function SamaelLevitateHarlejanAndGuard() - _00E_FXEldritchShader03.Play(MQ12b_SC5_SergeantHarlejanREF) - _00E_FXEldritchShader03.Play(MQ12b_SC5_HarlejanGuardYoungREF) - Debug.SendAnimationEvent(MQ12b_SC5_HarlejanGuardYoungREF, "returnToDefault") - Debug.SendAnimationEvent(MQ12b_SC5_SergeantHarlejanREF, "returnToDefault") - Debug.SendAnimationEvent(MQ12b_SC5_HarlejanGuardYoungREF, "IdleDA02BoethiahPostEnter") - Debug.SendAnimationEvent(MQ12b_SC5_SergeantHarlejanREF, "IdleDA02BoethiahPostEnter") - - Wait(4) - _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC5_SergeantHarlejanREF) - _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC5_HarlejanGuardYoungREF) - + _00E_FXEldritchShader03.Play(MQ12b_SC5_SergeantHarlejanREF) + _00E_FXEldritchShader03.Play(MQ12b_SC5_HarlejanGuardYoungREF) + Debug.SendAnimationEvent(MQ12b_SC5_HarlejanGuardYoungREF, "returnToDefault") + Debug.SendAnimationEvent(MQ12b_SC5_SergeantHarlejanREF, "returnToDefault") + Debug.SendAnimationEvent(MQ12b_SC5_HarlejanGuardYoungREF, "IdleDA02BoethiahPostEnter") + Debug.SendAnimationEvent(MQ12b_SC5_SergeantHarlejanREF, "IdleDA02BoethiahPostEnter") + + Wait(4) + _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC5_SergeantHarlejanREF) + _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC5_HarlejanGuardYoungREF) + EndFunction Function KillHarlejanAndGuard() - Game.ShakeCamera(afStrength = 0.5) - ObjectReference KillMarkerHarlejan = MQ12b_SC5_SergeantHarlejanREF.PlaceAtMe(XMarker) - ObjectReference KillMarkerGuardYoung = MQ12b_SC5_HarlejanGuardYoungREF.PlaceAtMe(XMarker) - KillMarkerGuardYoung.MoveTo(MQ12b_SC5_SergeantHarlejanREF, 0.0, 0.0, 200) - KillMarkerHarlejan.MoveTo(MQ12b_SC5_HarlejanGuardYoungREF, 0.0, 0.0, 200) - _00E_A1_DevourSoul_DisintegrateFXS.Stop(MQ12b_SC5_SergeantHarlejanREF) - _00E_A1_DevourSoul_DisintegrateFXS.Stop(MQ12b_SC5_HarlejanGuardYoungREF) - _00E_FXEldritchShader03.Stop(MQ12b_SC5_HarlejanGuardYoungREF) - _00E_FXEldritchShader03.Stop(MQ12b_SC5_HarlejanGuardYoungREF) - MQ12b_SC5_HarlejanGuardYoungREF.SetAlpha(0.0) - MQ12b_SC5_SergeantHarlejanREF.SetAlpha(0.0) - - KillMarkerHarlejan.PlaceAtMe(_00E_MAGEldritchShockExplosion) - KillMarkerHarlejan.PlaceAtMe(_00E_FS_MAGGoreExplosion) - KillMarkerGuardYoung.PlaceAtMe(_00E_MAGEldritchShockExplosion) - KillMarkerGuardYoung.PlaceAtMe(_00E_FS_MAGGoreExplosion) - - _00E_A1_DevourSoulScreamM.Play(KillMarkerGuardYoung) - _00E_A1_DevourSoulScreamM.Play(KillMarkerHarlejan) - + Game.ShakeCamera(afStrength = 0.5) + ObjectReference KillMarkerHarlejan = MQ12b_SC5_SergeantHarlejanREF.PlaceAtMe(XMarker) + ObjectReference KillMarkerGuardYoung = MQ12b_SC5_HarlejanGuardYoungREF.PlaceAtMe(XMarker) + KillMarkerGuardYoung.MoveTo(MQ12b_SC5_SergeantHarlejanREF, 0.0, 0.0, 200) + KillMarkerHarlejan.MoveTo(MQ12b_SC5_HarlejanGuardYoungREF, 0.0, 0.0, 200) + _00E_A1_DevourSoul_DisintegrateFXS.Stop(MQ12b_SC5_SergeantHarlejanREF) + _00E_A1_DevourSoul_DisintegrateFXS.Stop(MQ12b_SC5_HarlejanGuardYoungREF) + _00E_FXEldritchShader03.Stop(MQ12b_SC5_HarlejanGuardYoungREF) + _00E_FXEldritchShader03.Stop(MQ12b_SC5_HarlejanGuardYoungREF) + MQ12b_SC5_HarlejanGuardYoungREF.SetAlpha(0.0) + MQ12b_SC5_SergeantHarlejanREF.SetAlpha(0.0) + + KillMarkerHarlejan.PlaceAtMe(_00E_MAGEldritchShockExplosion) + KillMarkerHarlejan.PlaceAtMe(_00E_FS_MAGGoreExplosion) + KillMarkerGuardYoung.PlaceAtMe(_00E_MAGEldritchShockExplosion) + KillMarkerGuardYoung.PlaceAtMe(_00E_FS_MAGGoreExplosion) + + _00E_A1_DevourSoulScreamM.Play(KillMarkerGuardYoung) + _00E_A1_DevourSoulScreamM.Play(KillMarkerHarlejan) + EndFunction Function CloseGate() - MQ12b_SC11_GateREF.SetOpen(False) + MQ12b_SC11_GateREF.SetOpen(False) EndFunction Function SamaelTeleportAway() - _00E_Music_Combat_BonehunterNoCond.Remove() - _00E_SilenceTransitionHighPriority.Add() - MQ12b_SC5_HarlejanLinker.Disable() - ;MQ12b_SC5_SergeantHarlejanREF.Disable() - ;MQ12b_SC5_HarlejanGuardYoungREF.Disable() - _00E_MC_TealorREF.StopCombat() - _00E_MC_TealorREF.StopCombatAlarm() - _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC11_SamaelREF) - Utility.Wait(1) - MQ12b_SC11_SamaelREF.PlaceAtMe(_00E_MAGEldritchShockExplosion, 1) - MQ12b_SC11_SamaelREF.Disable() + _00E_Music_Combat_BonehunterNoCond.Remove() + _00E_SilenceTransitionHighPriority.Add() + MQ12b_SC5_HarlejanLinker.Disable() + ;MQ12b_SC5_SergeantHarlejanREF.Disable() + ;MQ12b_SC5_HarlejanGuardYoungREF.Disable() + _00E_MC_TealorREF.StopCombat() + _00E_MC_TealorREF.StopCombatAlarm() + _00E_A1_DevourSoul_DisintegrateFXS.Play(MQ12b_SC11_SamaelREF) + Utility.Wait(1) + MQ12b_SC11_SamaelREF.PlaceAtMe(_00E_MAGEldritchShockExplosion, 1) + MQ12b_SC11_SamaelREF.Disable() EndFunction @@ -724,223 +725,224 @@ EndFunction Function SetUpSC12() - Game.RequestAutoSave() + Game.RequestAutoSave() ; need to disable these guards: if the player ignored them / they got stuck somewhere, tealor & yuslan might aggro them even in the harbor ; is also called in StartSC06() but needs to be here for save compatibility MQ12b_SC4_Market_Linker.Disable() MQ12b_SC12_FacadeSoldierNehrim01.GetActorBase().SetEssential(false) - MQ12b_SC12_FacadeSoldierEnderal01.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC12_FacadeSoldierNehrim01) - MQ12b_SC6_HarborProp023.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC6_HarborProp046) - MQ12b_SC6_HarborProp047.Kill(MQ12b_SC6_HarborProp047) - MQ12b_SC6_HarborProp022.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC12_FacadeSoldierEnderal02) - - _00E_MC_TealorREF.StopCombat() - _00E_MC_TealorREF.StopCombatAlarm() - - _00E_MC_YuslanRef.Enable() - - If !_00E_MC_TaranorREF.IsEnabled() - _00E_MC_TaranorREF.Enable() - EndIf - - If _00E_MC_TaranorREF.IsDead() - _00E_MC_TaranorREF.Resurrect() - EndIf - - If !_00E_SC_AlmaREF.IsEnabled() - _00E_SC_AlmaREF.Enable() - EndIf - - If _00E_SC_AlmaREF.IsDead() - _00E_SC_AlmaREF.Resurrect() - EndIf - - MQ12b_SC12_ConversationWithTaranor.ForceStart() - + MQ12b_SC12_FacadeSoldierEnderal01.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC12_FacadeSoldierNehrim01) + MQ12b_SC6_HarborProp023.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC6_HarborProp046) + MQ12b_SC6_HarborProp047.Kill(MQ12b_SC6_HarborProp047) + MQ12b_SC6_HarborProp022.PlayIdleWithTarget(pa_1HMKillMoveShortB, MQ12b_SC12_FacadeSoldierEnderal02) + + _00E_MC_TealorREF.StopCombat() + _00E_MC_TealorREF.StopCombatAlarm() + + _00E_MC_YuslanRef.Enable() + + If !_00E_MC_TaranorREF.IsEnabled() + _00E_MC_TaranorREF.Enable() + EndIf + + If _00E_MC_TaranorREF.IsDead() + _00E_MC_TaranorREF.Resurrect() + EndIf + + If !_00E_SC_AlmaREF.IsEnabled() + _00E_SC_AlmaREF.Enable() + EndIf + + If _00E_SC_AlmaREF.IsDead() + _00E_SC_AlmaREF.Resurrect() + EndIf + + MQ12b_SC12_ConversationWithTaranor.ForceStart() + EndFunction Function SC12_ComeOutTaranor() - ; Sometimes, Taranor fails to come to the gate when needed in SC12 - ; (see http://sureai.net:9898/browse/ERB-2130 ). - ; This failsave teleports him. - If _00E_MC_TaranorREF.GetDistance(MQ12b_SC12_TaranorWalkMarker001) > 200 - _00E_MC_TaranorREF.MoveTo(MQ12b_SC12_TaranorWalkMarker001) - EndIf + ; Sometimes, Taranor fails to come to the gate when needed in SC12 + ; (see http://sureai.net:9898/browse/ERB-2130 ). + ; This failsave teleports him. + If _00E_MC_TaranorREF.GetDistance(MQ12b_SC12_TaranorWalkMarker001) > 200 + _00E_MC_TaranorREF.MoveTo(MQ12b_SC12_TaranorWalkMarker001) + EndIf EndFunction Function TeleportYuslanToGate() - Wait(2) - _00E_Func_SafeMove.SafeMoveTo(_00E_MC_YuslanRef, MQ12b_SC12_YuslanTeleportMarker) - _00E_Func_WaitForRef.WaitForReferenceToLoad(_00E_MC_YuslanRef) - TimeFadeIn01FXS.Play(_00E_MC_YuslanRef) - Debug.sendAnimationEvent(_00E_MC_YuslanRef, "IdleWebEnterInstant") - _00E_MC_YuslanRef.SetActorValue("Variable03", 5) - TimeFadeOut01FXS.Stop(_00E_MC_YuslanRef) - TimeFadeIn01FXS.Play(_00E_MC_YuslanRef) - Game.ShakeCamera(afStrength = 0.1) - _00E_MC_YuslanRef.playidle(WebIdleExit) - TimeFadeIn01FXS.Stop(_00E_MC_YuslanRef) - _00E_MC_YuslanRef.SetActorValue("Variable03", 0) - MQ12b_SC12_YuslanTeleportMarker.PlaceAtMe(_00E_MAGEldritchShockExplosionTeleport, 1) - - _00E_MC_TaranorREF.MoveTo(MQ12b_SC12_TaranorEnableMarker) - _00E_SC_AlmaREF.MoveTo(MQ12b_SC12_AlmaMarkerREF) + Wait(2) + _00E_Func_SafeMove.SafeMoveTo(_00E_MC_YuslanRef, MQ12b_SC12_YuslanTeleportMarker) + _00E_Func_WaitForRef.WaitForReferenceToLoad(_00E_MC_YuslanRef) + TimeFadeIn01FXS.Play(_00E_MC_YuslanRef) + Debug.sendAnimationEvent(_00E_MC_YuslanRef, "IdleWebEnterInstant") + _00E_MC_YuslanRef.SetActorValue("Variable03", 5) + TimeFadeOut01FXS.Stop(_00E_MC_YuslanRef) + TimeFadeIn01FXS.Play(_00E_MC_YuslanRef) + Game.ShakeCamera(afStrength = 0.1) + _00E_MC_YuslanRef.playidle(WebIdleExit) + TimeFadeIn01FXS.Stop(_00E_MC_YuslanRef) + _00E_MC_YuslanRef.SetActorValue("Variable03", 0) + MQ12b_SC12_YuslanTeleportMarker.PlaceAtMe(_00E_MAGEldritchShockExplosionTeleport, 1) + + _00E_MC_TaranorREF.MoveTo(MQ12b_SC12_TaranorEnableMarker) + _00E_SC_AlmaREF.MoveTo(MQ12b_SC12_AlmaMarkerREF) EndFunction Function SetUpSC13() - PlayerREF.AddItem(_01E_TeleportrolleSonnentempel, 1) - - _00E_MQ12b_SC11_BarrierLightREF.Disable() - - EnableArcanistsAndGuard() - AllowIdleChatter.SetValue(0) - - Wait(1) - - MQ12b_SC13_TempleScene.ForceStart() - - MQ12b_SC11_SamaelBarrierREF.PlayAnimation("playanim01") - - _00E_MC_YaelaREF.MoveTo(MQ12a_SC15_YaelaStandMarker) - MQ12b_SC14_SiegeTempleMarker.Enable() - _00E_MQ12b_SC15_Novice.MoveTo(MQ12b_SC15_NoviceMarkerREF) - - MQ12b_SC14_TempleGuardWoundedREF.Enable() - MQ12b_SC14_HarborGuardREF.MoveTo(MQ12b_SC14_OrderGuardMarker) - - _00E_MC_LeoraREF.Enable() - _00E_MC_LeoraREF.SetAlpha(1) - - _00E_MC_JorrekRef.Disable() - - MQ12b_SC14_JorrekREF.Enable() - - MQ12b_SC14_ApothekariusREF.Enable() - MQ12b_SC14_ApothekariusREF.MoveTo(MQ12b_SC14_GuardMarkerREF) - _00E_MC_LeoraREF.MoveTo(MQ12b_SC14_LeoraMarkerREF) - _00E_MC_NataraREF.MoveTo(MQ12b_SC14_NataraMarkerREF) - + PlayerREF.AddItem(_01E_TeleportrolleSonnentempel, 1) + + _00E_MQ12b_SC11_BarrierLightREF.Disable() + + EnableArcanistsAndGuard() + AllowIdleChatter.SetValue(0) + + Wait(1) + + MQ12b_SC13_TempleScene.ForceStart() + + MQ12b_SC11_SamaelBarrierREF.PlayAnimation("playanim01") + + _00E_MC_YaelaREF.MoveTo(MQ12a_SC15_YaelaStandMarker) + MQ12b_SC14_SiegeTempleMarker.Enable() + _00E_MQ12b_SC15_Novice.MoveTo(MQ12b_SC15_NoviceMarkerREF) + + MQ12b_SC14_TempleGuardWoundedREF.Enable() + MQ12b_SC14_HarborGuardREF.MoveTo(MQ12b_SC14_OrderGuardMarker) + + _00E_MC_LeoraREF.Enable() + _00E_MC_LeoraREF.SetAlpha(1) + + _00E_MC_JorrekRef.Disable() + + MQ12b_SC14_JorrekREF.Enable() + + MQ12b_SC14_ApothekariusREF.Enable() + MQ12b_SC14_ApothekariusREF.MoveTo(MQ12b_SC14_GuardMarkerREF) + _00E_MC_LeoraREF.MoveTo(MQ12b_SC14_LeoraMarkerREF) + _00E_MC_NataraREF.MoveTo(MQ12b_SC14_NataraMarkerREF) + EndFunction Function EnableArcanistsAndGuard() - MQ12b_SC12_HarborArcanist02REF.Enable() - BerserkerFXS.Play(MQ12b_SC12_YoungGuardREF) - Return - + MQ12b_SC12_HarborArcanist02REF.Enable() + BerserkerFXS.Play(MQ12b_SC12_YoungGuardREF) + Return + EndFunction Function EnableArcanistFX() - _00E_MagicProtectionLoop02M.Play(MQ12b_SC12_HarborArcanist01REF) - MQ12b_SC12_HarborArcanist02REF.AddSpell(_00E_ABEldritchDrainSelfWithFX) - MQ12b_SC12_HarborArcanist01REF.AddSpell(_00E_ABEldritchDrainSelfWithFX) - _00E_MC_YuslanRef.AddSpell(_00E_ABEldritchDrainSelfWithFX) + _00E_MagicProtectionLoop02M.Play(MQ12b_SC12_HarborArcanist01REF) + MQ12b_SC12_HarborArcanist02REF.AddSpell(_00E_ABEldritchDrainSelfWithFX) + MQ12b_SC12_HarborArcanist01REF.AddSpell(_00E_ABEldritchDrainSelfWithFX) + _00E_MC_YuslanRef.AddSpell(_00E_ABEldritchDrainSelfWithFX) EndFunction Function MoveTealorWeatherFailsave() - - If _00E_MC_TealorREF.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf - - _00E_MC_TealorREF.MoveTo(MQ12b_SC14_TealorMarkerREF) - SkyrimStormRain.ForceActive(True) - + + If _00E_MC_TealorREF.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf + + _00E_MC_TealorREF.MoveTo(MQ12b_SC14_TealorMarkerREF) + SkyrimStormRain.ForceActive(True) + EndFunction Function SetUpSC14() - SkyrimStormRain.ForceActive(True) - MQ16_StubbornGuardREF.MoveTo(MQ12b_SC16_Flavour_Keeper_Female) - MQ12b_Flavour_Novice.MoveTo(MQ12b_SC16_Flavour_Novice) - MQ05Prologue_EmporiumKeeper.MoveTo(MQ12b_SC16_Flavour_Keeper_01) - Game.RequestAutoSave() - MQ12b_SC14_JorrekREF.Enable() - MQ12b_SC14_JorrekREF.SetOutfit(_25E_HolyOrder_WardenOutfit) - MQ12b_SC13_TempleScene.Stop() - - If _00E_MC_TealorREF.IsDisabled() - _00E_MC_TealorREF.Enable() - EndIf - - If MQ12b_SC13_TempleScene.IsPlaying() - MQ12b_SC13_TempleScene.Stop() - EndIf - - _00E_MC_TealorREF.MoveTo(MQ12b_SC14_TealorMarkerREF) + SkyrimStormRain.ForceActive(True) + MQ16_StubbornGuardREF.MoveTo(MQ12b_SC16_Flavour_Keeper_Female) + MQ12b_Flavour_Novice.MoveTo(MQ12b_SC16_Flavour_Novice) + MQ05Prologue_EmporiumKeeper.MoveTo(MQ12b_SC16_Flavour_Keeper_01) + Game.RequestAutoSave() + MQ12b_SC14_JorrekREF.Enable() + MQ12b_SC14_JorrekREF.SetOutfit(_25E_HolyOrder_WardenOutfit) + MQ12b_SC13_TempleScene.Stop() + + If _00E_MC_TealorREF.IsDisabled() + _00E_MC_TealorREF.Enable() + EndIf + + If MQ12b_SC13_TempleScene.IsPlaying() + MQ12b_SC13_TempleScene.Stop() + EndIf + + _00E_MC_TealorREF.MoveTo(MQ12b_SC14_TealorMarkerREF) _00E_MC_NataraREF.MoveTo(MQ12b_SC14_NataraMarkerREF) - MQ12b_SC16_Flavor.ForceStart() - - MQ12b_SC14_TempleScene02.ForceStart() - + MQ12b_SC16_Flavor.ForceStart() + + MQ12b_SC14_TempleScene02.ForceStart() + EndFunction Function SetUpSC15() - _00E_MC_LexREF.MoveTo(MQ12a_SC0_DebugLexStart) - _00E_MC_YaelaREF.MoveTo(MQ12a_SC15_YaelaStandMarker) + _00E_MC_LexREF.MoveTo(MQ12a_SC0_DebugLexStart) + _00E_MC_YaelaREF.MoveTo(MQ12a_SC15_YaelaStandMarker) - MQ12b_SC15_TempleScene03.ForceStart() + MQ12b_SC15_TempleScene03.ForceStart() EndFunction Function CompleteQuestAndStartMQ12c() - If MQ12b_SC16_Flavor.IsPlaying() - MQ12b_SC16_Flavor.Stop() - EndIf - - A_CrimeFaction.SetCrimeGold(iCrimeGoldBeforeMQ12bNonViolent) - A_CrimeFaction.SetCrimeGoldViolent(iCrimeGoldBeforeMQ12bViolent) - - MQ12b_SC12_HarborArcanist02REF.Disable() - MQ12b_Market_CastleCollisionREF.Disable() - MQ12b_SC12_YoungGuardREF.Disable() - AudioCategoryAMB.SetVolume(1.0) - PlayerREF.RemoveFromFaction(MQ12b_TemporarySiegeFaction) - MQ12b_SC14_JorrekREF.Disable() + If MQ12b_SC16_Flavor.IsPlaying() + MQ12b_SC16_Flavor.Stop() + EndIf + + A_CrimeFaction.SetCrimeGold(iCrimeGoldBeforeMQ12bNonViolent) + A_CrimeFaction.SetCrimeGoldViolent(iCrimeGoldBeforeMQ12bViolent) + + MQ12b_SC12_HarborArcanist02REF.Disable() + MQ12b_Market_CastleCollisionREF.Disable() + MQ12b_SC12_YoungGuardREF.Disable() + AudioCategoryAMB.SetVolume(1.0) + PlayerREF.RemovePerk(_00E_ArkSiegeLockedGatesPerk) + PlayerREF.RemoveFromFaction(MQ12b_TemporarySiegeFaction) + MQ12b_SC14_JorrekREF.Disable() ; the following line is called twice before, that was inserted later, see description of bug above, still needs to be called here for save compatibility - MQ12b_SC4_Market_Linker.Disable() - MQ12b_SC3_UpperCityLinker01.Disable() - MQ12b_SC5_LowerDistrictLinkMarker.Disable() - MQ12b_SC5_HarlejanLinker.Disable() - MQ12b_SC6_HarborLinker.Disable() - MQ12b_SC6_ArcherMarker.Disable() - MQ12b_SC3_BattleSoundMarker.Disable() - MQ12b_SC6_NehrimeseGateLinker.Disable() + MQ12b_SC4_Market_Linker.Disable() + MQ12b_SC3_UpperCityLinker01.Disable() + MQ12b_SC5_LowerDistrictLinkMarker.Disable() + MQ12b_SC5_HarlejanLinker.Disable() + MQ12b_SC6_HarborLinker.Disable() + MQ12b_SC6_ArcherMarker.Disable() + MQ12b_SC3_BattleSoundMarker.Disable() + MQ12b_SC6_NehrimeseGateLinker.Disable() Ark_MyradRef.MoveToMyEditorLocation() MQ12b_DisableThisDudeHeIsAnnoyingREF.Enable() - bArkUnderAttackPrelude = False - bArkUnderAttack = False - bArkUnderAttackFinalScene = False - Weather.ReleaseOverride() - _00E_SilenceTransitionHighPriority.Remove() - _00E_TeleportGlobal.SetValueInt(0) - TimeScale.SetValue(fTimeScaleBefore) - MQ03_SC1_CastleWorldDoor.BlockActivation(False) - MQ12b_SC4_BarracksDoorREF.BlockActivation(False) - MQ12b_SC5_HarborDoorREF.BlockActivation(False) - _00E_SouthQuarter_UndercityDoorREF.BlockActivation(False) - MQ12b_SC5_LowerDistrictMarketDoor01REF.BlockActivation(False) - MQ12b_SC5_LowerDistrictMarketDoor02REF.BlockActivation(False) - UnregisterForUpdate() - _00E_EPHandler.GiveEP(__Config_RewardEXP) - AllowIdleChatter.SetValue(1) - Self.CompleteQuest() - ReEnableNPCs() + bArkUnderAttackPrelude = False + bArkUnderAttack = False + bArkUnderAttackFinalScene = False + Weather.ReleaseOverride() + _00E_SilenceTransitionHighPriority.Remove() + _00E_TeleportGlobal.SetValueInt(0) + TimeScale.SetValue(fTimeScaleBefore) + MQ03_SC1_CastleWorldDoor.BlockActivation(False) + MQ12b_SC4_BarracksDoorREF.BlockActivation(False) + MQ12b_SC5_HarborDoorREF.BlockActivation(False) + _00E_SouthQuarter_UndercityDoorREF.BlockActivation(False) + MQ12b_SC5_LowerDistrictMarketDoor01REF.BlockActivation(False) + MQ12b_SC5_LowerDistrictMarketDoor02REF.BlockActivation(False) + UnregisterForUpdate() + _00E_EPHandler.GiveEP(__Config_RewardEXP) + AllowIdleChatter.SetValue(1) + Self.CompleteQuest() + ReEnableNPCs() DisablePanicTriggerbox() - MQ12c.SetCurrentStageID(5) - GoToState("Aftermath") - RegisterForSingleUpdateGameTime(24) - + MQ12c.SetCurrentStageID(5) + GoToState("Aftermath") + RegisterForSingleUpdateGameTime(24) + Steam.UnlockAchievement("END_SIEGE_01") - + EndFunction Function DisablePanicTriggerbox() ;extra function because it gets also called from _00E_PlayerSetUpScript @@ -949,27 +951,27 @@ EndFunction Function StartSC01Failsave() - If !MQ12b_SC01_LexilExplains.IsPlaying() - MQ12b_SC01_LexilExplains.ForceStart() - EndIf - + If !MQ12b_SC01_LexilExplains.IsPlaying() + MQ12b_SC01_LexilExplains.ForceStart() + EndIf + EndFunction ;===================================================================================== -; ADJUST GAME TIME +; ADJUST GAME TIME ;===================================================================================== Function AdjustTime() - float fGameHour = GameHour.GetValue() - - fTimeScaleBefore = TimeScale.GetValue() - - If (fGameHour <= 4 || fGameHour >= 21) - TimeScale.SetValue(0.1) - Else - GoToState("WaitForNight") - EndIf + float fGameHour = GameHour.GetValue() + + fTimeScaleBefore = TimeScale.GetValue() + + If (fGameHour <= 4 || fGameHour >= 21) + TimeScale.SetValue(0.1) + Else + GoToState("WaitForNight") + EndIf EndFunction @@ -977,39 +979,39 @@ State WaitForNight Event OnBeginState() - TimeScale.SetValue(100) - RegisterForSingleUpdate(5) - + TimeScale.SetValue(100) + RegisterForSingleUpdate(5) + EndEvent Event OnUpdate() - If (GameHour.GetValue() <= 4 || GameHour.GetValue() >= 21) - TimeScale.SetValue(0.1) - Else - RegisterForSingleUpdate(5) - EndIf - + If (GameHour.GetValue() <= 4 || GameHour.GetValue() >= 21) + TimeScale.SetValue(0.1) + Else + RegisterForSingleUpdate(5) + EndIf + EndEvent EndState ;===================================================================================== -; SIEGE EFFECTS +; SIEGE EFFECTS ;===================================================================================== Function UpdateCatapultStrikes(String sStrikeLocation) - sCurrentStrikeLocation = sStrikeLocation + sCurrentStrikeLocation = sStrikeLocation EndFunction State Aftermath - Event OnUpdateGameTime() - MQ12b_SC14_SiegeTempleMarker.Disable() + Event OnUpdateGameTime() + MQ12b_SC14_SiegeTempleMarker.Disable() - EndEvent + EndEvent EndState @@ -1023,38 +1025,39 @@ Event OnUpdate() ; "LowerDistrict" ; "HarborDistrict" - - if bBarrierFailsave - bBarrierFailsave = False - MQ12b_SC11_SamaelBarrierREF.PlayGamebryoAnimation("AnimIdle02") - EndIf - - If !bArkUnderAttackFinalScene - If sCurrentStrikeLocation == "Market" - MQ12b_SC4_StrikeSpawnerMarket.CallCatapultStrike() - ElseIf sCurrentStrikeLocation == "UpperCity" - MQ12b_SC3_CatapultFireController.CallCatapultStrike() - ElseIf sCurrentStrikeLocation == "LowerDistrict" - MQ12b_SC4_StrikeSpawnerLowerDistrict.CallCatapultStrike() - ElseIf sCurrentStrikeLocation == "HarborDistrict" - MQ12b_SC4_StrikeSpawnerHarborDistrict.CallCatapultStrike() - EndIf - - - If (GameHour.GetValue() <= 4 || GameHour.GetValue() >= 21) && TimeScale.GetValue() > 1.0 - TimeScale.SetValue(0.1) - EndIf - - - RegisterForSingleUpdate(5) - EndIf - + + if bBarrierFailsave + bBarrierFailsave = False + MQ12b_SC11_SamaelBarrierREF.PlayGamebryoAnimation("AnimIdle02") + EndIf + + If !bArkUnderAttackFinalScene + if ! PlayerREF.IsInInterior() + If sCurrentStrikeLocation == "Market" + MQ12b_SC4_StrikeSpawnerMarket.CallCatapultStrike() + ElseIf sCurrentStrikeLocation == "UpperCity" + MQ12b_SC3_CatapultFireController.CallCatapultStrike() + ElseIf sCurrentStrikeLocation == "LowerDistrict" + MQ12b_SC4_StrikeSpawnerLowerDistrict.CallCatapultStrike() + ElseIf sCurrentStrikeLocation == "HarborDistrict" + MQ12b_SC4_StrikeSpawnerHarborDistrict.CallCatapultStrike() + EndIf + endif + + If (GameHour.GetValue() <= 4 || GameHour.GetValue() >= 21) && TimeScale.GetValue() > 1.0 + TimeScale.SetValue(0.1) + EndIf + + + RegisterForSingleUpdate(5) + EndIf + EndEvent EndState ;===================================================================================== -; PROPERTIES +; PROPERTIES ;===================================================================================== bool bBarrierFailsave @@ -1300,3 +1303,5 @@ EffectShader Property _00E_A1_DevourSoul_DisintegrateFXS Auto EffectShader Property BerserkerFXS Auto _00E_GypsyMinstrelsControlScript Property GypsyMinstrelsControl Auto + +Perk Property _00E_ArkSiegeLockedGatesPerk Auto