Script Fix for TGLarceny quest

Post » Wed May 30, 2012 1:48 pm

Hi,
I encountered the issue with not being able to return the last Larceny Target to Delvin (whichever it is).
As I understand, this is a known issue, but with no current workaround on Skyrim 1.4 as far as I know.

Maybe it has been fixed internally at Bethesda, but locally I had a look at the scripts using the creation kit.

I think I managed to fix the issue.
I modified the concerned scripts (TGLarcenyScript.psc, TGLarcenyItemScript.psc and QF_TGLarceny_0004C6C2.psc)
so that it works for people who haven't picked up all the Larceny Targets already (7 in total).

Basically, after returning a larceny target, it checks how many larceny targets have been enabled in the thieves guild,
whereas before it was checking upon pickup by the player, and stopping the quest when picking up the last target.

I wouldn't probably have coded it that way if I only considered new playthroughs.
I'm not familiar with the skyrim/papyrus script saving system, but I just added private script variables hopefully to minimize any backward incompatibility.
I've left some original code commented out.

What is the proper way to suggest fixes?

Thanks for the great game by the way!


TGLarcenyScript.psc :
Spoiler

Scriptname TGLarcenyScript extends Quest  Conditionalint Property pTGLCount Auto Conditionalint Property pTGLSay Auto ConditionalInt TGLTargetReturnedCount = 0Int TGLTargetTotalCount = 7Quest Property pTGLQuest Auto ConditionalObjectReference Property pTGL02Bee AutoObjectReference Property pTGL03Decanter AutoObjectReference Property pTGL04Map AutoObjectReference Property pTGL05Model AutoObjectReference Property pTGL06Cube AutoObjectReference Property pTGL07Fox AutoObjectReference Property pTGL08Eye Autofunction TGLCheckLastTargetReturned(); pTGLCount += 1	TGLTargetReturnedCount = 0	if pTGL02Bee.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL03Decanter.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL04Map.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL05Model.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL06Cube.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL07Fox.IsEnabled()		TGLTargetReturnedCount += 1	endif	if pTGL08Eye.IsEnabled()		TGLTargetReturnedCount += 1	endif; if pTGLCount == 1;  if pTGLSay == 0;   pTGLSay = 1;  endif; endif; if pTGLCount >= 7	if TGLTargetReturnedCount >= TGLTargetTotalCount	   if pTGLQuest.GetStage() < 200		   pTGLQuest.SetStage(200)	   endif	endifendFunction

TGLarcenyItemScript.psc :
Spoiler

Scriptname TGLarcenyItemScript extends ReferenceAlias  Conditionalint Property pTGLDone Auto Conditionalint Property pTGLStageSet Auto ConditionalQuest Property pTGLQuest Auto ConditionalEvent OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)if pTGLDone == 0  if akNewContainer == Game.GetPlayer();   (pTGLQuest as TGLarcenyScript).TGLCheck()   pTGLQuest.SetStage(pTGLStageSet)   pTGLDone = 1  endifendifendEvent

QF_TGLarceny_0004C6C2.psc
Spoiler

;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment;NEXT FRAGMENT INDEX 61Scriptname QF_TGLarceny_0004C6C2 Extends Quest Hidden;BEGIN ALIAS PROPERTY TGLT08Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT08Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT07Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT07Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT05Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT05Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT06Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT06Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT04Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT04Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT03Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT03Alias Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLDelvin;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLDelvin Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLVex;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLVex Auto;END ALIAS PROPERTY;BEGIN ALIAS PROPERTY TGLT02Alias;ALIAS PROPERTY TYPE ReferenceAliasReferenceAlias Property Alias_TGLT02Alias Auto;END ALIAS PROPERTY;BEGIN FRAGMENT Fragment_46Function Fragment_46();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned East Empire Shipping MapSetObjectiveCompleted(40,1)Game.GetPlayer().RemoveItem(Alias_TGLT04Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL04Map.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_48Function Fragment_48();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Dwemer Puzzle CubeSetObjectiveCompleted(60,1)Game.GetPlayer().RemoveItem(Alias_TGLT06Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL06Cube.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_33Function Fragment_33();BEGIN CODE;Found Queen Bee StatueSetObjectiveDisplayed(20,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_47Function Fragment_47();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Ship ModelSetObjectiveCompleted(50,1)Game.GetPlayer().RemoveItem(Alias_TGLT05Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL05Model.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_43Function Fragment_43();BEGIN CODE;Found Eye of the FalmerSetObjectiveDisplayed(80,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_44Function Fragment_44();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Queen Bee StatueSetObjectiveCompleted(20,1)Game.GetPlayer().RemoveItem(Alias_TGLT02Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL02Bee.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_45Function Fragment_45();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Honningbrew DecanterSetObjectiveCompleted(30,1)Game.GetPlayer().RemoveItem(Alias_TGLT03Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL03Decanter.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_38Function Fragment_38();BEGIN CODE;Found Ship ModelSetObjectiveDisplayed(50,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_29Function Fragment_29();BEGIN CODE;All items collectedCompleteAllObjectives()Stop();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_41Function Fragment_41();BEGIN CODE;Found Bust of the Gray FoxSetObjectiveDisplayed(70,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_54Function Fragment_54();BEGIN CODE;Debug Start for TestingpTG02Quest.SetStage(0)pTG02Quest.SetStage(20)pTG02Quest.SetStage(30)pTG02Quest.SetStage(35)pTG02BQuest.SetStage(20)pTG02BQuest.SetStage(30)pTG02Quest.SetStage(40);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_49Function Fragment_49();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Bust of the Gray FoxSetObjectiveCompleted(70,1)Game.GetPlayer().RemoveItem(Alias_TGLT07Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold)kmyQuest.pTGL07Fox.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_57Function Fragment_57();BEGIN CODE;Enable the Disabled StuffAlias_TGLT03Alias.GetRef().Enable()Alias_TGLT04Alias.GetRef().Enable()Alias_TGLT06Alias.GetRef().Enable();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_40Function Fragment_40();BEGIN CODE;Found Dwemer Puzzle CubeSetObjectiveDisplayed(60,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_36Function Fragment_36();BEGIN CODE;Found East Empire Shipping MapSetObjectiveDisplayed(40,1);END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_50Function Fragment_50();BEGIN AUTOCAST TYPE TGLarcenyScriptQuest __temp = self as QuestTGLarcenyScript kmyQuest = __temp as TGLarcenyScript;END AUTOCAST;BEGIN CODE;Returned Eye of the FalmerSetObjectiveCompleted(80,1)Game.GetPlayer().RemoveItem(Alias_TGLT08Alias.GetRef())Game.GetPlayer().AddItem(pTGRewardGold,4)kmyQuest.pTGL08Eye.Enable()kmyQuest.TGLCheckLastTargetReturned();END CODEEndFunction;END FRAGMENT;BEGIN FRAGMENT Fragment_35Function Fragment_35();BEGIN CODE;Found Honningbrew DecanterSetObjectiveDisplayed(30,1);END CODEEndFunction;END FRAGMENT;END FRAGMENT CODE - Do not edit anything between this and the begin commentQuest Property pTG02Quest  Auto  Quest Property pTG02BQuest  Auto  LeveledItem Property pTGRewardGold  Auto  
User avatar
Jose ordaz
 
Posts: 3552
Joined: Mon Aug 27, 2007 10:14 pm

Return to V - Skyrim

cron