Enderal SE https://mod.pub/enderal-se/38-enderal-se
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.0 KiB
163 lines
5.0 KiB
Scriptname MS11QuestScript extends Quest Conditional
|
|
|
|
bool Property QuestionedWitness1 Auto Conditional
|
|
bool Property QuestionedWitness2 Auto Conditional
|
|
bool Property QuestionedWitness3 Auto Conditional
|
|
bool Property PlayerHasAuthority Auto Conditional
|
|
bool Property PlayerHasFoundHorridRoom Auto Conditional
|
|
bool Property CalixtoDead Auto Conditional
|
|
bool Property SentViolaToHjerim Auto Conditional
|
|
bool Property GotRedHerringFromCalixto Auto Conditional
|
|
bool Property PlayerInStoneQuarter Auto Conditional
|
|
bool Property PlayerInMurderZone Auto Conditional ; best variable name ever?
|
|
|
|
bool Property PlayerReadJournal2 auto conditional
|
|
bool Property GetInHjerimTovaPointer auto conditional
|
|
bool Property GetInHjerimUlfricPointer auto conditional
|
|
bool Property GetInHjerimHousePointer auto conditional
|
|
bool Property InvestigateViolaPointer auto conditional
|
|
bool Property InvestigateCalixtoPointer auto conditional
|
|
bool Property GuardGavePlayerStory auto conditional
|
|
|
|
bool Property ViolaConversationShunt = false auto conditional
|
|
bool Property PlayerTalkedToViolaAboutButcher auto conditional
|
|
|
|
bool Property SiegeOfWindhelmTakingPlace auto conditional
|
|
|
|
ReferenceAlias Property Calixto auto
|
|
ReferenceAlias Property Arivanya auto
|
|
ReferenceAlias Property PotentialThirdVictim auto
|
|
ReferenceAlias Property FinalVictim auto
|
|
|
|
; 77465: bad deletion of disabled corpse
|
|
ReferenceAlias Property InitialVictimBody auto
|
|
ActorBase Property AlternateBody auto
|
|
ReferenceAlias Property CrimeScene auto
|
|
Faction Property HarmlessCorpse auto
|
|
; /77465
|
|
|
|
Package Property VictimWanderPackage auto
|
|
Scene Property CalixtoKILLKILLKILLScene auto
|
|
Armor Property InnocuousAmulet auto
|
|
Armor Property NecromancersAmulet auto
|
|
|
|
Quest Property ShadowQuest auto
|
|
ObjectReference Property HjerimDoor auto
|
|
|
|
ReferenceAlias Property Helgird auto
|
|
ObjectReference Property OriginalBody auto
|
|
ObjectReference Property HallOfDeadBrowseMarker auto
|
|
bool Property BodyIsInHallOfDead auto conditional
|
|
bool Property TalkedToHelgird auto conditional
|
|
|
|
bool Property WuunferthArrested auto conditional
|
|
|
|
Perk Property Investigator auto
|
|
|
|
Function Setup()
|
|
; set up investigation stuff
|
|
Game.GetPlayer().AddPerk(Investigator)
|
|
|
|
; change Hjerim door from impossible to very hard
|
|
HjerimDoor.SetLockLevel(100)
|
|
|
|
; Debug.Trace("MS11: Kicked off.")
|
|
EndFunction
|
|
|
|
; 77465: bad deletion of disabled corpse
|
|
Function CheckForDeletedBody()
|
|
; Debug.Trace("MS11: Checking for presence of bug 77465.")
|
|
if (InitialVictimBody.GetReference() == None)
|
|
; Debug.Trace("MS11: 77465 detected; correcting.")
|
|
Actor alt = CrimeScene.GetReference().PlaceAtMe(AlternateBody) as Actor
|
|
alt.AddToFaction(HarmlessCorpse)
|
|
alt.Kill()
|
|
InitialVictimBody.ForceRefTo(alt)
|
|
; Debug.Trace("MS11: Crime scene is " + CrimeScene)
|
|
; Debug.Trace("MS11: Alt is " + alt)
|
|
endif
|
|
EndFunction
|
|
; /77465
|
|
|
|
Function DisableIfNotCompleted(int objective)
|
|
if (!IsObjectiveCompleted(objective))
|
|
SetObjectiveDisplayed(objective, 0)
|
|
endif
|
|
EndFunction
|
|
|
|
Function ResolveObjective(int complete, int display)
|
|
Quest targetQuest = None
|
|
if (ShadowQuest.IsRunning())
|
|
; we're running MS11b based on the quest "resuming"
|
|
targetQuest = ShadowQuest
|
|
else
|
|
; player is good detective
|
|
targetQuest = self
|
|
endif
|
|
|
|
if (complete != 0)
|
|
; Debug.Trace("MS11: Setting obj " + complete + " completed on " + targetQuest)
|
|
targetQuest.SetObjectiveCompleted(complete, true)
|
|
endif
|
|
if (display != 0)
|
|
; Debug.Trace("MS11: Setting obj " + display + " displayed on " + targetQuest)
|
|
targetQuest.SetObjectiveDisplayed(display, true)
|
|
endif
|
|
EndFunction
|
|
|
|
Function MoveBody()
|
|
if (!BodyIsInHallOfDead)
|
|
; move Susanna's body to the hall of the dead
|
|
BodyIsInHallOfDead = true
|
|
InitialVictimBody.GetReference().Disable()
|
|
HallOfDeadBrowseMarker.Enable()
|
|
Actor helgirdAct = Helgird.GetActorReference()
|
|
helgirdAct.MoveTo(HallOfDeadBrowseMarker)
|
|
helgirdAct.EvaluatePackage()
|
|
endif
|
|
EndFunction
|
|
|
|
Function CleanupHallOfDead()
|
|
if (BodyIsInHallOfDead)
|
|
BodyIsInHallOfDead = false
|
|
HallOfDeadBrowseMarker.Disable()
|
|
Helgird.GetActorReference().EvaluatePackage()
|
|
endif
|
|
EndFunction
|
|
|
|
Function SetupStakeout()
|
|
; give him the real article
|
|
if (Calixto.GetActorReference().GetItemCount(InnocuousAmulet) > 0)
|
|
Calixto.GetActorReference().RemoveItem(InnocuousAmulet, 1)
|
|
Calixto.GetActorReference().AddItem(NecromancersAmulet, 1)
|
|
endif
|
|
|
|
; pick the poor victim
|
|
if (!Arivanya.GetActorReference().IsDead())
|
|
FinalVictim.ForceRefTo(Arivanya.GetActorReference())
|
|
else
|
|
FinalVictim.ForceRefTo(PotentialThirdVictim.GetActorReference())
|
|
endif
|
|
|
|
; just start the scene -- anything more fancy just breaks :-(
|
|
CalixtoKILLKILLKILLScene.Start()
|
|
|
|
; start checking as to when to start the scene
|
|
; RegisterForUpdate(10)
|
|
EndFunction
|
|
|
|
|
|
Function Teardown()
|
|
Game.GetPlayer().RemovePerk(Investigator)
|
|
EndFunction
|
|
|
|
;stubbed in by jduvall
|
|
function CivilWarBattle(bool BattleActive)
|
|
{When called the Civil War siege script is starting or stopping in Windhelm. BattleActive = true means starting, = false means stopping.}
|
|
|
|
; debug.trace("MS11QuestScript CivilWarBattle(" + BattleActive + ")")
|
|
|
|
SiegeOfWindhelmTakingPlace = BattleActive
|
|
|
|
EndFunction
|
|
|
|
|