ChanceWolf Posted June 24, 2012 Share Posted June 24, 2012 I simply hijack mq101 on the first stage and have the gamemanger quest I made determine how to start the game. Thanks for the help, I've got my new start working great, the only challenge now is "picking up" the MainQuest line, I'm trying to start it at MQ103 area, where you go the the Jarl of Whiterun to inform him, however the Jarl doesn't respond, nothing in Dragons reach is setup for this part, and only Sven in Riverwood gives me the "I saw a dragon in Helgen" but no quests get added and nothing "happens." Did you intend to have an easy way to pick-up the MainQuest line in your mod? Thanks!-Chance Link to comment Share on other sites More sharing options...
scrivener07 Posted June 24, 2012 Share Posted June 24, 2012 Ive left the vanilla main quest start completely untouched. For any alternative start I had a scene setup with the smith in riverwood. I had it so when you talk to him He asks you to deliver a letter to the yarl concerning a dragon sighting and the main quest continues normally from there. This was in an older messy version. As for the dragonsreach and riverwood not being setup for the MQ this is correct. All the triggers in these areas are based on stage conditions so the scripts still need to be adjusted to fire them. Since your interested in the mod I just got motivated to bump this up on my priority list. Link to comment Share on other sites More sharing options...
ChanceWolf Posted June 25, 2012 Share Posted June 25, 2012 Thanks for your continued help, as far as I know, this is the only place I have found a real discussion regarding alternate starts from the creation kit point of view. I have tried to start the Main quest at MQ102 At Stage "30" which *should* put DragonsReach into the scene where the Jarl will be ready to accept information for this quest. I have attempted to do this, for simplicity's sake with a trigger field the player walks through as a test. Scriptname MetroChoice extends Quest Quest Property MQ102 Auto Event OnTriggerEnter(ObjectReference ActionRef) if (akActionRef == Game.GetPlayer()) MQ102.SetStage(30) endIf EndEVENTI have verified that the Property is correctly assigned to the MQ102 Quest within Creation Kit.I'm far from a proficient coder, as best as I can tell this script *should* work, but it doesn't. (Probably something small I've overlooked)However, if you open console and typeSetStage MQ102 30It works correctly, Dragon's Reach is setup correct and the Main Quest is successfully started. Thanks for your continued help, I hope this topic helps anyone else with this fun mess :) -Chance Link to comment Share on other sites More sharing options...
scrivener07 Posted June 27, 2012 Share Posted June 27, 2012 Its a mess for sure. Bethesda wanted to be very sure the beginning of the game went smoothly, lots of redundant crap. I have another alt start mod I made that has the entire MQ and dialogues fixed. I need to merge the two so Ill upload a copy for you to look at in a bit. Link to comment Share on other sites More sharing options...
tox2ik Posted June 27, 2012 Share Posted June 27, 2012 I've been waiting for someone to come up with a clean way of getting this done. If I understand correctly, essentially you need to start a new quest in one of the dragon-attack fragments and finish mq101. Am I right? Link to comment Share on other sites More sharing options...
scrivener07 Posted July 2, 2012 Share Posted July 2, 2012 MQ101 - Stage 0 - MQQuickstart 0 (condition) I added this line to start my game manager quest first thing. ovht_GameTypeManager.SetStage(5) Then on ovht_fp_GameManagerQuest - Stage 5 I run my initiate function which lives in my central script file. kmyQuest.InitGameSelection() Heres a peak at my central script files currently (WIP). Scriptname ovht_fp_GM_GMExtendedScript extends Quest ;======================================= ;OnUpdate play short title screens ;======================================= Int TitleSequenceCount Event OnUpdate() ShortTitle() EndEvent Function RegisterTitleScreens() Game.ShowTitleSequenceMenu() RegisterForSingleUpdate(4) IntroMusic.Add() EndFunction Function ShortTitle() If TitleSequenceCount == 0 Game.StartTitleSequence("Sequence3") TitleSequenceCount = 1 RegisterForSingleUpdate(5) ElseIf TitleSequenceCount == 1 Game.StartTitleSequence("Sequence4") TitleSequenceCount = 2 RegisterForSingleUpdate(5) ElseIf TitleSequenceCount == 2 Game.HideTitleSequenceMenu() EndIf EndFunction ;================================================================================================= ;=======================================;======================================= ;Alternative Start: Player Spawn, Generation, and Setup ;=======================================;======================================= Function InitGameSelection() Game.GetPlayer().moveto(ovht_fp_GM_TempPlayerInsert) Int InputButton = ovht_fp_GM_StartTypeMessage.Show() If (InputButton == 0) ;Is Vanilla Start InitVanillaStartMode() Elseif (InputButton == 1) ;Is Start by Ship InitAlternativeStartMode() SpawnPlayerShip() Elseif (InputButton == 2) ;Is Start by Traveller InitAlternativeStartMode() SpawnPlayerTraveller() Endif EndFunction Function InitVanillaStartMode() ovht_fp_GM_IsAltStartGameChecker.SetValue(0) ;this value lets me disable certain things in the game if in alt start mode. Mq101.SetStage(10) DialogueWhiterunGuardGateStop.Start() EndFunction Function InitAlternativeStartMode() ;MQ Cleanup Scripts MQ101.SetStage(1001) MQ101DragonAttack.SetStage(1001) ;Whiterun Fixes WhiterunMainGateRef.Lock(false) ;Make sure Whiterun main gate is unlocked ;Whiterun house purchase MQ00.SetStage(5) ;enable house purchasing Alias_Balgruuf.GetActorReference().SetRelationshipRank(Game.GetPlayer(), 3) ;enable house purchasing in Whiterun MQ103.SetStage(30);TEMP DELETE ;Attempt to add MQ pickup EndFunction Function SpawnPlayerShip() ovht_fp_GM_IsAltStartGameChecker.SetValue(1) Game.GetPlayer().moveto(ovht_fp_GM_ShipPlayerInsert) Game.ShowFirstPersonGeometry() Game.FadeOutGame(False, true, 2.0, 30.0) Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = false, abJournalTabs= false) RegisterTitleScreens() CharGenShip() ovht_fp_GM_StartShipQuest.SetStage(0) EndFunction Function CharGenShip() CharGenAddGear() Utility.Wait(15) ;Wait for intro slides to finish Game.ShowRaceMenu() Utility.Wait(1) CharGenFailSafe() EndFunction Function SpawnPlayerTraveller() ovht_fp_GM_IsAltStartGameChecker.SetValue(2) Game.GetPlayer().moveto(ovht_fp_GM_TravellerPlayerInsert) Game.ShowFirstPersonGeometry() Game.FadeOutGame(False, true, 2.0, 30.0) Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = false, abJournalTabs= false) RegisterTitleScreens() CharGenTraveller() ovht_fp_GM_StartTravellerQuest.SetStage(0) EndFunction Function CharGenTraveller() CharGenAddGear() Utility.Wait(15) ;Wait for intro slides to finish Game.ShowRaceMenu() Utility.Wait(1) CharGenFailSafe() EndFunction Function CharGenFailSafe() Game.EnablePlayerControls() Game.GetPlayer().SetRestrained(false) ;try forcing an idle Game.SetInChargen(false, false, false) ;enable saving and waiting Game.SetHudCartMode(false) EndFunction ;================================================================================================= ;======================================= ;Player start items ;======================================= Function CharGenAddGear() ;Remove derp gear Game.GetPlayer().RemoveAllItems() ;Add player items Game.GetPlayer().AddItem(ovht_fp_PlayerStartItemsList001) ;Multi items Game.GetPlayer().AddItem(Gold001, 200) Game.GetPlayer().AddItem(IronArrow, 19) ;/ ;Add and equip player gear Game.GetPlayer().AddItem(ovht_fp_PlayerStartGearList001, 1, false) Game.GetPlayer().EquipItem(ovht_fp_PlayerStartGearList001) Game.GetPlayer().AddItem(ClothesCollegeRobesApprentice, 1, false) Game.GetPlayer().EquipItem(ClothesCollegeRobesApprentice, 1, false) /; EndFunction ;================================================================================================= ;======================================= ;Race ;======================================= Function AddRaceSpells() Actor player = Game.GetPlayer() RemoveRaceSpells(player) Race playerRace = player.GetActorBase().GetRace() if playerRace == ArgonianRace elseif playerRace == BretonRace player.AddSpell(ConjureFamiliar) elseif playerRace == DarkElfRace player.AddSpell(Sparks) elseif playerRace == HighElfRace player.AddSpell(Fury) elseif playerRace == ImperialRace elseif playerRace == KhajiitRace elseif playerRace == NordRace elseif playerRace == OrcRace elseif playerRace == RedguardRace elseif playerRace == WoodElfRace endif EndFunction Function RemoveRaceSpells(Actor pActor) pActor.RemoveSpell(ConjureFamiliar) pActor.RemoveSpell(Sparks) pActor.RemoveSpell(Fury) EndFunction Function AddRaceSkills() Actor Player = Game.GetPlayer() Race PlayerRace = player.GetActorBase().GetRace() If playerRace == ArgonianRace elseif playerRace == BretonRace elseif playerRace == DarkElfRace elseif playerRace == HighElfRace elseif playerRace == ImperialRace elseif playerRace == KhajiitRace elseif playerRace == NordRace elseif playerRace == OrcRace elseif playerRace == RedguardRace elseif playerRace == WoodElfRace Endif EndFunction ;================================================================================================= ;======================================= ;blank section ;======================================= ;================================================================================================= ;=======================================+=======================================-=======================================+======================================= ;=======================================*===================================Properties==================================*======================================= ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Dont forget to fill the goddamn properties :palmface: ;======================================= ;Race ;======================================= ; special starting race spells Spell Property ConjureFamiliar Auto Spell Property Sparks Auto Spell Property Fury Auto ; player races Race Property ArgonianRace Auto Race Property BretonRace Auto Race Property DarkElfRace Auto Race Property HighElfRace Auto Race Property ImperialRace Auto Race Property KhajiitRace Auto Race Property NordRace Auto Race Property OrcRace Auto Race Property RedguardRace Auto Race Property WoodElfRace Auto ;======================================= ; player gear and items ;======================================= FormList Property ovht_fp_PlayerStartGearList001 Auto FormList Property ovht_fp_PlayerStartItemsList001 Auto Armor Property ClothesBoots01 Auto Armor Property ClothesCollegeHood Auto Armor Property ClothesCollegeRobesApprentice Auto MiscObject Property Gold001 Auto Ammo Property IronArrow Auto ;======================================= ;Special properties ;======================================= GlobalVariable Property ovht_fp_GM_IsAltStartGameChecker Auto ;IMPORTANT FLAG Quest Property ovht_fp_GameManagerQuest Auto Quest Property ovht_fp_GM_StartShipQuest Auto Quest Property ovht_fp_GM_StartTravellerQuest Auto Message Property ovht_fp_GM_StartTypeMessage Auto MusicType Property IntroMusic Auto ;duh ;Player Insertion Points ObjectReference Property ovht_fp_GM_TempPlayerInsert Auto ObjectReference Property ovht_fp_GM_ShipPlayerInsert Auto ObjectReference Property ovht_fp_GM_TravellerPlayerInsert Auto ;Fixes Quest Property MQ00 Auto ;Needs to prestart because start game enabled flag shouldnt be set. Quest Property MQ103 Auto ;MQ Pickup TEMP FIX DELETE Quest Property MQ101 Auto ;runs cleanup Quest Property MQ101DragonAttack Auto ;runs cleanup ;Whiterun Fixes Quest Property DialogueWhiterunGuardGateStop Auto ObjectReference Property WhiterunMainGateRef Auto ReferenceAlias Property Alias_Balgruuf Auto ;Helgen Fixes ;.... If vanilla start is picked MQ101 continues normally.If not I run these new cleanup stages on MQ101 and MQ101DragonAttack each with new stages 1001. MQ101 Stage 1001 ;Debug.Messagebox("MQ101 cleanup completed") ;======================================================= ;Disable NPCs ;======================================================= ;Disable Ulfric Alias_Ulfric.TryToDisable() Alias_Ulfric.GetActorRef().MoveToMyEditorLocation() Alias_Ulfric.TryToEnable() Alias_Ulfric.GetActorRef().SetOutFit(UlfricOutfit) ;Disable Ulfrics's Stormcloak crew Alias_StormcloakPrisoner01.TryToDisable() Alias_StormcloakPrisoner02.TryToDisable() Alias_StormcloakPrisoner03.TryToDisable() Alias_StormcloakPrisoner04.TryToDisable() ;Disable Ralof Alias_Ralof.GetActorRef().IgnoreFriendlyHits(False) Alias_Ralof.GetActorRef().SetNotShowOnStealthMeter(false) Alias_Ralof.GetActorRef().BlockActivation(false) Alias_Ralof.TryToDisable() ;Testing ; Disable Tullius Alias_GeneralTullius.TryToDisable() Alias_GeneralTullius.GetActorRef().MoveToMyEditorLocation() Alias_GeneralTullius.TryToEnable() ;Disable Tullius's Imperial crew Alias_ImperialSoldierFort01.TryToDisable() Alias_ImperialSoldierFort01.GetActorRef().DisableNoWait() Alias_ImperialSoldier01.TryToDisable() Alias_ImperialSoldier02.TryToDisable() Alias_HelgenArcher01.GetActorRef().DisableNoWait() Alias_HelgenArcher02.GetActorRef().DisableNoWait() Alias_HelgenArcher03.GetActorRef().DisableNoWait() Alias_HelgenArcher04.GetActorRef().DisableNoWait() ;Disable Hadvar Alias_Hadvar.GetActorRef().IgnoreFriendlyHits(False) Alias_Hadvar.GetActorRef().SetNotShowOnStealthMeter(false) Alias_Hadvar.GetActorRef().BlockActivation(false) Alias_Hadvar.TryToDisable() ;Testing ;Disable Lokir Alias_Prisoner01.TryToDisable() ;Disable Civilians Alias_CivilianTorri.tryToDisable() Alias_CivilianTorolf.tryToDisable() Alias_CivilianGunnar.trytoDisable() CiviliansOutsideHelgenMarker.disable() ;Disable Alduin ;Alias_Alduin.GetRef().Disable() ;Disable Elenwen Alias_Elenwen.trytoDisable() Alias_Elenwen.GetActorRef().MoveToMyEditorLocation() Alias_Elenwen.GetActorRef().EnableNoWait() ;Disable Justiciars Alias_Justiciar01.trytoDisable() Alias_Justiciar02.trytoDisable() ;Disable Priest of Arkay Alias_Priest.GetActorRef().DisableNoWait() ;Disable Hodies Alias_CartHorse1.TryToDisable() Alias_CartHorse2.TryToDisable() Alias_CartHorse1.GetRef().DisableNoWait() ;======================================================= ;======================================================= ;Cleanup Helgen ;======================================================= ;Disable activation of Helgens Keep doors. Alias_KeepDoorInteriorImperials.GetRef().BlockActivation(true) Alias_KeepDoorInteriorStormcloaks.GetRef().BlockActivation(true) ;Removes draw bridge and adds rubble at Helgen Keep cave exit. BridgeOriginal.disable() BridgeDebris.enable() ;Unlock and open Helgens exterior gates NorthGate.Lock(False) NorthGate.SetOpen(True) EastGate.Lock(False) EastGate.SetOpen(True) ; release activation block on keep doors Alias_KeepDoorInteriorImperials.GetRef().BlockActivation(true) Alias_KeepDoorInteriorStormcloaks.GetRef().BlockActivation(true) ;Block exterior keep doors ovht_KeepImperialDoor.BlockActivation() ovht_KeepStormCloakDoor.BlockActivation() ; Release reservation of Helgen HelgenReserved.Clear() FortNeugradEnableMarker.Enable() PostMQ101KeepMarker.enableNoWait() MQ101OutsideClutterMarker.enableNoWait() Stop() and MQ101DragonAttack Stage 1001 ;Debug.Messagebox("MQ101DragonAttack cleanup completed") ;======================================================= ;Disable NPCs ;======================================================= ;Disable Imperials Alias_ImperialSoldier01.tryToDisableNoWait() Alias_ImperialSoldier02.tryToDisableNoWait() Alias_ImperialSoldierHelgen01.tryToDisableNoWait() Alias_ImperialSoldierHelgen02.tryToDisableNoWait() Alias_DragonBaitATower.tryToDisable() Alias_DragonBaitBTower.tryToDisable() Alias_ArcherBTower.tryToDisable() Alias_DragonBaitDBridge.tryToDisable() Alias_ImperialArcherA01.tryToDisable() Alias_ImperialArcherA02.tryToDisable() Alias_ImperialArcherA03.tryToDisable() Alias_ImperialArcherC01.tryToDisable() Alias_ImperialArcherC02.tryToDisable() Alias_ImperialArcherD01.tryToDisable() Alias_ImperialArcherD02.tryToDisable() Alias_ImperialArcherD03.tryToDisable() Alias_ImperialArcherD04.tryToDisable() Alias_ImperialMageC01.tryToDisable() Alias_ImperialMageD01.tryToDisable() Alias_ImperialSoldierFodderC01.tryToDisable() Alias_ImperialSoldierFodderD01.tryToDisable() ;Disable Stormcloaks Alias_StormcloakPrisoner01.tryToDisableNoWait() Alias_StormcloakPrisoner02.tryToDisableNoWait() Alias_StormcloakPrisoner03.tryToDisableNoWait() Alias_StormcloakPrisoner04.tryToDisableNoWait() ;Disable Civilians Alias_CivilianGunnar.tryToDisableNoWait() Alias_CivilianTorolf.tryToDisableNoWait() Alias_CivilianTorri.tryToDisableNoWait() Alias_CivilianMatlara.tryToDisableNoWait() Alias_CivilianIngrid.tryToDisableNoWait() Alias_CivilianVilod.tryToDisableNoWait() Alias_ElenwensHorse.tryToDisableNoWait() ;======================================================= ;======================================================= ;Enable clean up and destruction ;======================================================= ;need to clean up Alias_TowerCollision.GetRef().DisableNoWait() AlduinAttackEnableMarker1.enableNoWait() AlduinPatrolBTowerExplosionTrigger.disableNoWait() BlockerBMarker.disableNoWait() BlockerCMarker.disableNoWait() DragonTowerHole.disableNoWait() HouseBlockerMarker.disableNoWait() ExplosionTriggerA01.disableNoWait() ExplosionTriggerB02.disableNoWait() PlayerInCTrigger.disableNoWait() PlayerInInnRoadTrigger.disableNoWait() PlayerInInnTrigger.disableNoWait() PlayerInKeepAreaTrigger.disableNoWait() PlayerInSquareTrigger.disableNoWait() RubbleAMarker.disableNoWait() RubbleBMarker.disableNoWait() RubbleCMarker.disableNoWait() RubbleDMarker.disableNoWait() RubbleEMarker.disableNoWait() SetStageTriggerPreLedge.disableNoWait() SmokeFXA.disableNoWait() SmokeFXB.disableNoWait() SmokeFXC.disableNoWait() SmokeFXD.disableNoWait() SmokeFXE.disableNoWait() CollisionAMarker.disableNoWait() CollisionBMarker.disableNoWait() CollisionCMarker.disableNoWait() CollisionInnMarker.disableNoWait() CollisionInnBackside.disableNoWait() TowerARockDebrisMarker.disableNoWait() dunCGHelgenGatesMarker.disableNoWait() ;enable the post Helgen Markers PostCGMajorClutter.enableNoWait() PostCGMajorFX.enableNoWait() PostCGAreaA.enableNoWait() PostCGAreaAclutter.enableNoWait() PostCGAreaB.enableNoWait() PostCGAreaBClutter.enableNoWait() PostCGAreaC.enableNoWait() PostCGAreaD.enableNoWait() PostCGAreaE.enableNoWait() PostCGAreaEClutter.enableNoWait() PostCGOutsideClutter.enableNoWait() PostCGTriggerMarker.disableNoWait() ;======================================================= stop() These are all the things each quest will normally do if completed normally all bunched together in one special cleanup stage. Im leaving them in their original script files to save myself filling all those properties.. for now. And thats basiclly it. Ive gone through hundreds of versions until I finally came up with something that causes almost no conflicts and edits almost no vanilla records all with scripts. Still working on how I want to present picking up the main questline for AltStart modes and merging any message boxes into the user interface. Link to comment Share on other sites More sharing options...
DarkPoserGirl Posted August 2, 2012 Share Posted August 2, 2012 I've been trying to work out something similar: a simple mod that rewrites the start of MQ101, but I'm having trouble working out how to script it.I'm getting the hang of putting quests together, but the scripting is still casuing problems for me.This is basically the sequence I'm tryng to make: 1 - Chosing to start a new game takes the player directly to Helgen. 2 - Once the player has been loaded, the race selection/character creation menu appears. 3 - When the player finishes by chosing their name, the game autosaves. The exact location in Helgen isn't important at the moment, and neither is the player's clothing, or what happens after the autosave: I just need to get these 3 steps to work, and then I can build on it from there, so any suggestions or help would be welcome. Link to comment Share on other sites More sharing options...
scrivener07 Posted August 5, 2012 Share Posted August 5, 2012 Feel free to mod off and distribute on the file I uploaded a few posts back Link to comment Share on other sites More sharing options...
Recommended Posts