Doobydoob Posted March 6, 2021 Share Posted March 6, 2021 When is the next update for the Loverslab version of Thief coming out? Link to comment
brewmasterhal Posted March 6, 2021 Share Posted March 6, 2021 19 hours ago, kimchow said: Skipped to 9.5 and went through most scenes. toris never starts the fisting scene. is there a command to get that? I posted console commands for this a few pages back. 1 hour ago, Doobydoob said: When is the next update for the Loverslab version of Thief coming out? Haven't really been able to do any work on this stuff since the end of last month. 2 Link to comment
alex61821 Posted March 8, 2021 Share Posted March 8, 2021 Problem with the dice game in madam's place. the dice do not actually roll they just stay as a 2. Anybody else have this happen? also the patches you list where do i download them from? and are they they same patches as before? i still have those. Link to comment
lese8 Posted March 8, 2021 Share Posted March 8, 2021 On 3/6/2021 at 4:41 AM, Mez558 said: I don't know but I believe it is meant to be down to where you place the posters, going by what Toris says when you collect them. Reveal hidden contents There is a variable hp_sw_brot RichShowGuestList_var that needs to be over 10 for it to work, if it is (I set it to 100 using the console) then Ormax's dialogue changes from him not carrying any extra coin to finding some in his pocket but the result was still the same from Toris. There is dialogue to suggest that something else should happen should they come up with 10gmarks. I tried it out. Place the ten posters near below NPCs, then you will get an achievement. Fanar, Olaf, Tulvar, Bormir(bedroom), Ormax(bedroom), Kush, Vilgen(bedroom), Grunwald(the wall infront of him), Palamed, Huzei. 4 Link to comment
tommorowneverdies Posted March 8, 2021 Share Posted March 8, 2021 hmm, im having an odd issue and was wondering if someone could offer some assistance I've downloaded and installed the latest version and all is working well, Except for the animations during the mini game segments I noticed during the Rock Paper scissors game both my character and the opponent just T Posed for it I didnt think much of it so I just did the usual, Run FNIS, but I still have them T Posing. its only during the minigame segment every other part of the mod so far has had animations. is this a bug with the latest download version or something? Link to comment
Mez558 Posted March 8, 2021 Share Posted March 8, 2021 6 hours ago, lese8 said: I tried it out. Place the ten posters near below NPCs, then you will get an achievement. Fanar, Olaf, Tulvar, Bormir(bedroom), Ormax(bedroom), Kush, Vilgen(bedroom), Grunwald(the wall infront of him), Palamed, Huzei. Thanks for sharing that, I was going to do this myself after Dogma explained how to tell if you have the right one by the noise it plays (The sound of paper being unfurled is the noise I think he was referring to) Had a bug where I had infinite posters (remained at 10) but I was going to test my theory again and screen shot the locations. Might still do that. Link to comment
SharpenedRock Posted March 10, 2021 Share Posted March 10, 2021 On 3/4/2021 at 8:05 PM, SharpenedRock said: Hi, so I am playing the SE public version. When I am trying to sneak the bards past the guy I cant signal them to move. Middle click doesn't do anything even when the guard is distracted. Does anyone have a clue how to fix or have a work around to get the bards in the city. ty So unfortunately after trying multiple saves and retries I can't find a way to get the bards to move. I was wondering if anyone knows any console commands to get the bards into Solitude at least so I can at least do their in city content later. If not, I don't mind delving into the papyrus machine code if anyone could guide me through any necessary steps. Link to comment
brewmasterhal Posted March 10, 2021 Share Posted March 10, 2021 12 hours ago, SharpenedRock said: So unfortunately after trying multiple saves and retries I can't find a way to get the bards to move. I was wondering if anyone knows any console commands to get the bards into Solitude at least so I can at least do their in city content later. If not, I don't mind delving into the papyrus machine code if anyone could guide me through any necessary steps. The script that controls this minigame is bd_sol_01_table_mg_sc, which contains the var definition Int Signal_key = 258. Probably the easiest thing to try first is to use setpqv bd_sq_sol Signal_key 57 after the minigame has started, which should change the key detection from <middle mouse> to <spacebar>. If you want to use a different key, please reference this page for a list of key codes. The current version of the code that I'm looking at (v1.1.1.0) has an MCM option to change this button, but in the case that your version doesn't this will hopefully work. If you want to make a permanent change to the keycode used within the compiled script, the best way I've found of doing something like that is to reference this document which specifies the v3.0 compiled papyrus script format. The following python script will perform a full parse of the compiled code and translate it to a human-readable format. You will have to modify the file pointer to point to the correct script file, and you may need to modify the print statements to output to a file depending on the limitations of your console output. Spoiler import datetime import os import struct def uint(chunk): return int.from_bytes(chunk, byteorder="big", signed=False) def uint8(chunk, index): return index+1, uint(chunk[index:index+1]) def uint16(chunk, index): return index+2, uint(chunk[index:index+2]) def uint32(chunk, index): return index+4, uint(chunk[index:index+4]) def uint64(chunk, index): return index+8, uint(chunk[index:index+8]) def sint(chunk): return int.from_bytes(chunk, byteorder="big", signed=True) def sint32(chunk, index): return index+4, sint(chunk[index:index+4]) def float(chunk, index): return index+4, struct.unpack('>f', chunk[index:index+4]) def strLen(chunk, index): return uint(chunk[index:index+2]) def string(chunk, index, len): return chunk[index:index+len].decode("utf-8") def str(chunk, index): len = strLen(chunk, index) return index+2+len, string(chunk, index+2, len) def indent(depth): space = "" for x in range(depth): space += " " return space class debugFunction: def __init__(self, objName, stateName, funcName, funcType, insCount, lineNums): self.objName = objName self.stateName = stateName self.funcName = funcName self.funcType = funcType self.insCount = insCount self.lineNums = lineNums print(f"debugFunction({objName}, {stateName}, {funcName}, {funcType}, {insCount}, {lineNums})") @staticmethod def parse(chunk, index, strTable): index, objName = uint16(chunk, index) index, stateName = uint16(chunk, index) index, funcName = uint16(chunk, index) index, funcType = uint8(chunk, index) index, insCount = uint16(chunk, index) lineNums = [] for x in range(insCount): index, lineNum = uint16(chunk, index) lineNums.append(lineNum) return index, debugFunction(strTable[objName], strTable[stateName], strTable[funcName], funcType, insCount, lineNums) class userFlag: def __init__(self, name, index): self.name = name self.flagIndex = index print(f"userFlag({name}, {index})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) index, flagIdx = uint8(chunk, index) return index, userFlag(strTable[nameIdx], flagIdx) class instruction: def __init__(self, op, args): self.op = op self.args = args print(f"instruction({op})") @staticmethod def parse(chunk, index, strTable): index, code = uint8(chunk, index) numArgs = 0 args = [] if code >= 0x01 and code <= 0x09: numArgs = 3 if code >= 0x0A and code <= 0x0E: numArgs = 2 if code >= 0x0F and code <= 0x13: numArgs = 3 if code == 0x14 or code == 0x1A: numArgs = 1 if code == 0x15 or code == 0x16: numArgs = 2 if code == 0x17 or code == 0x19: index, v1 = varData.parse(chunk, index, strTable) args.append(v1) index, v2 = varData.parse(chunk, index, strTable) args.append(v2) index, v3 = varData.parse(chunk, index, strTable) args.append(v3) index, c = varData.parse(chunk, index, strTable) args.append(c) numArgs = c.data print(f"numArgs {numArgs}") if code == 0x18: index, v1 = varData.parse(chunk, index, strTable) args.append(v1) index, v2 = varData.parse(chunk, index, strTable) args.append(v2) index, c = varData.parse(chunk, index, strTable) args.append(c) numArgs = c.data print(f"numArgs {numArgs}") if code >= 0x1B and code <= 0x1D: numArgs = 3 if code == 0x1E or code == 0x1F: numArgs = 2 if code == 0x20 or code == 0x21: numArgs = 3 if code == 0x22 or code == 0x23: numArgs = 4 for x in range(numArgs): index, a = varData.parse(chunk, index, strTable) args.append(a) return index, instruction(code, args) class varType: def __init__(self, name, type): self.name = name self.type = type print(f"varType({name}, {type})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) #print(nameIdx) index, typeIdx = uint16(chunk, index) #print(typeIdx) return index, varType(strTable[nameIdx], strTable[typeIdx]) class function: def __init__(self, retType, doc, usrFlags, flags, numParams, params, numLocals, locals, numIns, ins): self.retType = retType self.doc = doc self.usrFlags = usrFlags self.flags = flags self.numParams = numParams self.params = params self.numLocals = numLocals self.locals = locals self.numIns = numIns self.ins = ins print(f"function({retType}, {doc}, {usrFlags}, {flags}, {numParams}, {numLocals}, {numIns})") @staticmethod def parse(chunk, index, strTable): index, retIdx = uint16(chunk, index) print(f"retType {strTable[retIdx]}") index, docIdx = uint16(chunk, index) index, usrFlags = uint32(chunk, index) index, flags = uint8(chunk, index) index, numParams = uint16(chunk, index) print(f"{numParams} params") params = [] for x in range(numParams): index, p = varType.parse(chunk, index, strTable) params.append(p) index, numLocals = uint16(chunk, index) print(f"{numLocals} locals") locals = [] for x in range(numLocals): index, l = varType.parse(chunk, index, strTable) locals.append(l) index, numIns = uint16(chunk, index) print(f"{numIns} instructions") ins = [] for x in range(numIns): index, i = instruction.parse(chunk, index, strTable) ins.append(i) return index, function(strTable[retIdx], strTable[docIdx], usrFlags, flags, numParams, params, numLocals, locals, numIns, ins) class namedFunc: def __init__(self, name, func): self.name = name self.func = func print(f"namedFunc({name})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) print(f"namedFunc {strTable[nameIdx]}") index, f = function.parse(chunk, index, strTable) return index, namedFunc(strTable[nameIdx], f) class state: def __init__(self, name, numFuncs, funcs): self.name = name self.numFuncs = numFuncs self.funcs = funcs print(f"state({name}, {numFuncs})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) index, numFuncs = uint16(chunk, index) funcs = [] for x in range(numFuncs): index, f = namedFunc.parse(chunk, index, strTable) funcs.append(f) return index, state(strTable[nameIdx], numFuncs, funcs) class prop: def __init__(self, name, type, doc, usrFlags, flags, varName, read, write): self.name = name self.type = type self.doc = doc self.usrFlags = usrFlags self.flags = flags self.varName = varName self.read = read self.write = write print(f"prop({name}, {type}, {doc}, {usrFlags}, {flags}, {varName})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) index, typeIdx = uint16(chunk, index) index, docIdx = uint16(chunk, index) index, usrFlags = uint32(chunk, index) index, flags = uint8(chunk, index) varName = None if flags & 4 != 0: index, varIdx = uint16(chunk, index) varName = strTable[varIdx] read = None if flags & 5 == 1: index, f = function.parse(chunk, index, strTable) read = f write = None if flags & 6 == 2: index, f = function.parse(chunk, index, strTable) write = f return index, prop(strTable[nameIdx], strTable[typeIdx], strTable[docIdx], usrFlags, flags, varName, read, write) class varData: def __init__(self, type, data): self.type = type self.data = data print(f"varData({type}, {data})") @staticmethod def parse(chunk, index, strTable): index, type = uint8(chunk, index) data = None if type == 1 or type == 2: index, strIdx = uint16(chunk, index) data = strTable[strIdx] if type == 3: index, data = sint32(chunk, index) if type == 4: index, data = float(chunk, index) if type == 5: index, data = uint8(chunk, index) return index, varData(type, data) class variable: def __init__(self, name, type, usrFlags, data): self.name = name self.type = type self.usrFlags = usrFlags self.data = data print(f"variable({name}, {type}, {usrFlags})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) index, typeIdx = uint16(chunk, index) index, flags = uint32(chunk, index) index, data = varData.parse(chunk, index, strTable) return index, variable(strTable[nameIdx], strTable[typeIdx], flags, data) class objectData: def __init__(self, parent, doc, usrFlags, stateName, numVars, vars, numProps, props, numStates, states): self.parent = parent self.doc = doc self.usrFlags = usrFlags self.stateName = stateName self.numVars = numVars self.vars = vars self.numProps = numProps self.props = props self.numStates = numStates self.states = states print(f"objectData({parent}, {doc}, {usrFlags}, {stateName}, {numVars}, {numProps}, {numStates})") @staticmethod def parse(chunk, index, strTable): index, parentIdx = uint16(chunk, index) index, docIdx = uint16(chunk, index) index, flags = uint32(chunk, index) index, sNameIdx = uint16(chunk, index) index, numVars = uint16(chunk, index) vars = [] for x in range(numVars): index, v = variable.parse(chunk, index, strTable) vars.append(v) index, numProps = uint16(chunk, index) props = [] for x in range(numProps): index, p = prop.parse(chunk, index, strTable) props.append(p) index, numStates = uint16(chunk, index) states = [] for x in range(numStates): index, s = state.parse(chunk, index, strTable) states.append(s) return index, objectData(strTable[parentIdx], strTable[docIdx], flags, strTable[sNameIdx], numVars, vars, numProps, props, numStates, states) class object: def __init__(self, name, size, data): self.name = name self.size = size self.data = data print(f"object({name}, {size})") @staticmethod def parse(chunk, index, strTable): index, nameIdx = uint16(chunk, index) index, size = uint32(chunk, index) index, data = objectData.parse(chunk, index, strTable) return index, object(strTable[nameIdx], size, data) class Header: def __init__(self, chunk): index, self.magic = uint32(chunk, 0) if self.magic != 0xFA57C0DE: print("Bad header!") index, self.majVer = uint8(chunk, index) index, self.minVer = uint8(chunk, index) index, self.gameId = uint16(chunk, index) index, timeStamp = uint64(chunk, index) self.compTime = datetime.datetime.fromtimestamp(timeStamp) index, self.sourceFile = str(chunk, index) index, self.userName = str(chunk, index) index, self.mchnName = str(chunk, index) index, self.tableSize = uint16(chunk, index) self.strTable = [] for x in range(self.tableSize): index, s = str(chunk, index) self.strTable.append(s) index, self.debugFlag = uint8(chunk, index) self.debugFuncs = [] if self.debugFlag == 0x01: index, timeStamp = uint64(chunk, index) self.modTime = datetime.datetime.fromtimestamp(timeStamp) index, self.dbgCount = uint16(chunk, index) for x in range(self.dbgCount): index, d = debugFunction.parse(chunk, index, self.strTable) self.debugFuncs.append(d) index, self.flagCount = uint16(chunk, index) self.userFlags = [] for x in range(self.flagCount): index, f = userFlag.parse(chunk, index, self.strTable) index, self.objCount = uint16(chunk, index) self.objects = [] for x in range(self.objCount): index, o = object.parse(chunk, index, self.strTable) self.objects.append(o) def print(self): print(self.magic) print(self.majVer) print(self.minVer) print(self.gameId) print(self.compTime) print(self.sourceFile) print(self.userName) print(self.mchnName) print(self.tableSize) for x in range(0, self.tableSize): print(f"String {x}: {self.strTable[x]}") print(self.debugFlag) print(self.modTime) print(self.dbgCount) path = "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim\\Champollion\\compiled\\sf_hp_kustlq_farmersoutside_0308ef34.pex" with open(path, "rb") as file: chunk = file.read(os.path.getsize(path)) head = Header(chunk) head.print() I have been able to use this code, the uesp page, and a hex editor to directly modify scripts in-place. I think you'll need to have python 3.5 or better to run this code. If all else fails, you can use the in-place papyrus modification tools to change the line var.bards_to_town_Signal = false in the function start_table_mini_game() to var.bards_to_town_Signal = true, and then make a patch in TES5Edit that changes all of the phase start conditions in scene bd_sq_sol_01_ikol_mg_scene that contain the condition Subject.GetVMQuestVariable(bd_sq_sol, ::bards_to_town_IsDetect_var) = 1.0 to a condition that always evals to false. This should prevent the need to hit any buttons at all, and prevent Ikol from reacting to the bards. Link to comment
reaper222 Posted March 10, 2021 Share Posted March 10, 2021 On 3/4/2021 at 8:05 PM, SharpenedRock said: Hi, so I am playing the SE public version. When I am trying to sneak the bards past the guy I cant signal them to move. Middle click doesn't do anything even when the guard is distracted. Does anyone have a clue how to fix or have a work around to get the bards in the city. ty Use console command to disable and enable each of the bards then they will start moving for me Instruction (note this quest is bug. Workaround as the sex minigame starts. Press the middle mouse button. Pull up console command select one of the bards boys, then disable him, do not close the console window but wait two seconds, then enable him again and close the console window. He should move at that point. Rinse and repeat for the other boy.) Link to comment
ElvinJG81 Posted March 12, 2021 Share Posted March 12, 2021 How stable is the SE version? Edit: Every plugin is form 43. Every. Single. One. Link to comment
Highborn Posted March 12, 2021 Share Posted March 12, 2021 1 hour ago, ElvinJG81 said: How stable is the SE version? I'd say the same as LE in my experience. Link to comment
brewmasterhal Posted March 12, 2021 Share Posted March 12, 2021 1 hour ago, ElvinJG81 said: Edit: Every plugin is form 43. Every. Single. One. Doesn't seem to be a problem. I've never had any issues. Link to comment
Highborn Posted March 12, 2021 Share Posted March 12, 2021 3 hours ago, ElvinJG81 said: How stable is the SE version? Edit: Every plugin is form 43. Every. Single. One. I played the latest version with the plugin in form 43 with no issues. But you can try converting them by opening Creation Kit and saving. Link to comment
ElvinJG81 Posted March 13, 2021 Share Posted March 13, 2021 1 hour ago, Highborn said: I played the latest version with the plugin in form 43 with no issues. But you can try converting them by opening Creation Kit and saving. I've set up a Thief profile in MO2 so I'll give it a go tomorrow. Link to comment
decaluka Posted March 13, 2021 Share Posted March 13, 2021 Have the early parts of the quest been fixed at this point? I read that they had a few bugs Link to comment
ElvinJG81 Posted March 13, 2021 Share Posted March 13, 2021 Is it better to use SOS or SOS Light? (SSE) Link to comment
Highborn Posted March 13, 2021 Share Posted March 13, 2021 5 hours ago, decaluka said: Have the early parts of the quest been fixed at this point? I read that they had a few bugs I think many of them were fixed, but I didn't test it. 1 hour ago, ElvinJG81 said: Is it better to use SOS or SOS Light? (SSE) I think the mod works better with Light version Link to comment
ElvinJG81 Posted March 13, 2021 Share Posted March 13, 2021 Just now, Highborn said: I think many of them were fixed, but I didn't test it. I think the mod works better with Light version Thank you. Link to comment
gkk11 Posted March 13, 2021 Share Posted March 13, 2021 Is there a console command to toggle if I stayed for 1 or 2 drinks at the start? I'd like to see the other ending without redoing everything else. Link to comment
Highborn Posted March 14, 2021 Share Posted March 14, 2021 For people having trouble with trying to get the bards into Solitude and the middle mouse button not working, Dogma posted today a workaround: I fixed a few more issues that were reported to me and updated the files from the links. The only thing I didn’t fix was the problem with the bards in the Icol minigame. I saw for a long time how they wrote that the button does not work, so in the last update I added a control setting for this mini-game, but as it turned out, it’s not about the button. I have this problem only on SE, I found out the other day when I decided to check on this version. The bards really do not move, this is some kind of game error, because the variable switches correctly, but the AI idle packet continues to play, although this cannot be, since the conditions are not suitable. This is the first time I come across this. The only thought is that the SE version has a different implementation of the package system in the scene, and they are not redefined there inside the action. Let me know if you also have this problem on LE. In the future, I will redo this moment in a different way, so that it would work on SE too, I didn't want to do this now because this is the last patch, and I could have done some other jambs, but I already want to fully deal with the future update and not be distracted by all this. For now, you can use the console command setpqv bd_sq_sol bards_qs 100 during the mini-game, the scene should play as if the bards were in the city. You just have to manually delete those bards that remained outside the city, for this you need to enter the console, select them and write disable. Link to comment
longjohn119 Posted March 15, 2021 Share Posted March 15, 2021 On 3/12/2021 at 2:29 PM, ElvinJG81 said: How stable is the SE version? Edit: Every plugin is form 43. Every. Single. One. I have a Skyrim SE build that I put together in late November which has 351 mods and 9 of them are form 43 ..... I have 302+ hours on my save and have done everything (Including Amorous Adventures, Immersive Wenches and Sisters of Dibella) except for the Dragonborn DLC and it's still going strong ..... I even have 15 followers stashed away at the Bathing Beauties and Luxury Suites plus Ysolda as the housecarl in the private residence there ..... If the nag bothers you in MO2 you can go to the Configure Settings, plugin tab, look for "Form 43 plugin checker" and set it to Enabled = false ..... Or you can convert them in the Creation Kit but IMO that's just a waste of time ..... I used to worry about it but after this experiment I no longer do because anything over 300 hours with Sexlab Aroused is pushing it to the limit with or without Form 43 mods ..... Link to comment
alex61821 Posted March 15, 2021 Share Posted March 15, 2021 I can't get the over nite scene with Hamlof to play. If i tell him i will come back at night then as soon as i step away he says eww you have cum on your face. i wash it in the river and then he stops saying that but then i can only offer to pay him and he says he wants a kiss but then the only talk option is nevermind. i can kiss him if i did it the first time i talk to him but then that is just the short scene. Link to comment
Highborn Posted March 15, 2021 Share Posted March 15, 2021 22 minutes ago, alex61821 said: I can't get the over nite scene with Hamlof to play. If i tell him i will come back at night then as soon as i step away he says eww you have cum on your face. i wash it in the river and then he stops saying that but then i can only offer to pay him and he says he wants a kiss but then the only talk option is nevermind. i can kiss him if i did it the first time i talk to him but then that is just the short scene. When you agree to meet him at night for the kiss, you have to meet him at night, between 7 PM and 8 PM I believe. Then, wash at the samll waterway behind him, and then talk to him and the dialogue option to start should appear. If you talk with him too early I think you'll only get the options you mentioned. Link to comment
kakaer Posted March 16, 2021 Share Posted March 16, 2021 Does the achievement for placing the posters in all the right places affect the 10 gold marks gathering and does it unlock any new content? Also, someone asked before whether it's possible to change the amount of drinks with a console command rather than replaying the entire mod from scratch but it went unanswered, so I'm bumping the question. Link to comment
alex61821 Posted March 16, 2021 Share Posted March 16, 2021 18 hours ago, Highborn said: When you agree to meet him at night for the kiss, you have to meet him at night, between 7 PM and 8 PM I believe. Then, wash at the samll waterway behind him, and then talk to him and the dialogue option to start should appear. If you talk with him too early I think you'll only get the options you mentioned. OK i will try that time. Do you know what the timescale should be at? time is barely moving. I dont think time actually moved in the skunkway is that correct? it only moved if you did something right? after leaving the skunkway should time go back to normal? Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now