Jump to content

Kvellen

Members
  • Posts

    269
  • Joined

  • Last visited

Everything posted by Kvellen

  1. Unfortunately Eternity Keeper is not compatible with Deadfire Saves. It was created with the save structure of PoE1 in mind, and Obsidian overhauled their save system in an effort to improve load times for the sequel.
  2. Yes this is possible to do, there is a particular folder structure for it to work though: override\yourmodfolder\conversations\03_neketaka_vailian_district\03_cv_rtc_soldiers.conversationbundle The "iroll20s" console command is the only thing that disables achievements I think.
  3. It is a really frustrating bug. Escaping combat to heal only for my Assassin to glide on back towards the enemy with a sliver of health was a constant problem in my first playthrough. Always just thought it was due to having too high an action speed or something. Had no idea it was tied to AI Behaviour. I imagine this is a long shot but is there a chance that some kind of modded .aibehaviorbundle can fix it? It looks to me when it happens like the character might not be waiting the correct amount of time for the consume action to complete, or are possibly cancelling it in favour of the higher priority action of attacking perhaps?.
  4. I don't believe so. Have you checked the output_log.txt file for mentions of the word "error"? That usually shows if something in a mod is causing it not to load properly.
  5. Made a Watercolor converter file for Photopea. Double-click the thumbnail of the "Portrait" layer. This will open a smart layer tab in the program. replace the Calista image with your desired picture (can remove the background with https://www.remove.bg/) Go to file->Save(Smart Object) (or press ctrl+s) and then go back to the Deadfire Watercolor Template.psd tab. Might have to tweak a few things to get it to look right (altering the properties of the "Level 1", and/or Gaussian Blur effect strength, will make the lines darker/stronger). When you are happy with the results (or just want to preview it) go to File->Export as->PNG and change the dimensions to 90px by 141px. It's not perfect, but it works pretty well. The below were all made with this file, all except 2 required only minor edits.
  6. Based on: https://www.artstation.com/artwork/YaDZaK
  7. Decided to change this to a scripthook instead. Since that will account for the cases where the Drunkard's Regret is already collected and will also check if Oswald is dead. The only outlier remaining I could see is a situation where the ring was sold or lost some how before the scripthook is used. { "GameDataObjects": [ { "$type": "Game.GameData.ModScriptHookGameData, Assembly-CSharp", "DebugName": "Erol_Searched_Modscript", "ID": "d7891c14-b47e-4b71-9557-fbf10382f6e3", "Components": [ { "$type": "Game.GameData.ModScriptHookComponent, Assembly-CSharp", "RunOnlyOnce": "false", "SucceedOnlyOnce": "true", "Script": { "Conditional": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsGlobalValue(String, Operator, Int32)", "Parameters": ["n_Erol_State", "EqualTo", "3"], "Flags": "", "UnrealCall": "", }, "Not": false, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsItemCount(Guid, Operator, Int32)", "Parameters": [ "8e0aa96f-1726-43aa-8d67-a3a1c3816cdd", "GreaterThanOrEqualTo", "1" ] }, "Not": false, "Operator": 0 } ] }, "Scripts": [ { "Data": { "FullName": "Void SetGlobalValue(String, Int32)", "Parameters": ["b_10_erol_body_searched", "1"], "Flags": "", "UnrealCall": "", }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ] } ] } Interesting bit of trivia, all variables to do with Oswald use the name "Erol", and hint that at some point during development this quest would have been about the original owner of the Goose and Fox Tavern from PoE1. There is an unused quest item called Erol's Ring which is described as : "A simple band of gold with the words "Goose and Fox" written on the inside." In PoE1 Bishop (the current owner) mentions that Erol fled after getting into an argument with a Thayn during a debate.
  8. That's a really interesting find! I wonder if perhaps these were intended as special injuries that could be inflicted in certain areas, like the area beneath the Gullet? Probably a case of a feature being thematically interesting, but frustrating in practise.
  9. I experienced this same crash on start up whilst trying to install Special K recently, so that is likely the cause. Deleting the "dxgi.dll" file fixed the issue for me.
  10. Have run into this bug on a recent version of the game, and I am trying to make a fix. Essentially if you take the quest from Khan then head to Oathbinder's Sanctum, interrupt Oswald's trial, but let the Steel Garrotte proceed his execution. You are rewarded with 1400 copper, and at the end of the conversation teleported to the entrance chamber. This is where the problem occurs as to progress to the next stage of the quest you need to go back to trial chamber and search Oswald's body. From what I can tell the script that should set the variable "b_10_erol_body_searched" to "1" (True) when interacting with the corpse, doesn't activate when interacting with the loot pile that has replaced it with the scene changed. If you let the trial playout without interrupting it, then search the corpse the script will activates just fine though. Is there someway to maybe set it so a script will also trigger when searching this instance of the loot pile? Currently the only potential workaround I've come up with is to set following script on the Drunkard's Regret ring on his corpse, that activate once the item is picked up. { "GameDataObjects": [ { "$type": "Game.GameData.EquippableGameData, Assembly-CSharp", "DebugName": "Ring_U_Drunkards_Regret", "ID": "8e0aa96f-1726-43aa-8d67-a3a1c3816cdd", "Components": [{ "$type": "Game.GameData.DataScriptEventComponent, Assembly-CSharp", "Scripts": [{ "Event": "OnItemCollected", "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [{ "Data": { "FullName": "Void SetGlobalValue(String, Int32)", "Parameters": ["b_10_erol_body_searched", "1"], "Flags": "", "UnrealCall": "", }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ] } ] } ] }
  11. So after a bit of testing, I think this might be possible. The game will load a .globalscriptbundle mod, provided all 3 of the lines below are present. { "GlobalScripts": [], "GlobalExpressions": [], "GlobalPreferences": [] } This seems the case even in cases such as yours where what you'd want to change only involves the GlobalScripts brackets. Making changes this way does work from what I can tell from a very rough test involving modifying a few of the variables in the script that sets the VTC to unfriendly if you reject Alvari's offer in favour of keeping Maia in your party. The faction relation with the VTC seems to remain friendly (though they were still unwilling to work with me after the conversation), and upon leaving Neketaka I did not received the letter from Pallegina that removes her from my roster. I'm not 100% sure it was just overriding the specific changes made to the script in the file or was actually overriding (and erasing) all other lines from the globalscripts.globalscriptbundle. From what I gather global scripts only run when they are called to, so my concern is that the modded file might just be setting this line as the only global script in existence. Nevermind, this is actually how a global script gets added for The Beast of Winter, so modding global scripts in this way should be totally fine! Formatting example: { "GlobalScripts": [ { "ScriptCalls": [ { "Data": { "FullName": "Void SetGlobalValue(String, Int32)", "Parameters": [ "b_Queen_Hasongo_Missive_Delivered", "2" ], "Flags": "", "UnrealCall": "", "FunctionHash": 1935477378, "ParameterHash": 1987798281 }, "Conditional": { "Operator": 0, "Components": [] } }, { "Data": { "FullName": "Void DeliverMissive(StringTableType, Int32, Guid)", "Parameters": [ "Gui", "3790", "1e1efe1c-4781-40a0-b07d-741c839cdf06" ], "Flags": "", "UnrealCall": "", "FunctionHash": -275187270, "ParameterHash": 724583833 }, "Conditional": { "Operator": 0, "Components": [] } } ], "ID": "03b357d7-7a96-454f-a9d3-c80820416374", "ScriptType": 0, "Filename": "gsd_04_queen_hasongo_missive.globalscript" } ], "GlobalExpressions": [], "GlobalPreferences": [] } The above script normally would deliver the message from Onekaza that acknowledging your having gone to Hasongo, but will now instead deliver you one from Furrante instead. You can test this by saving it as a .globalscriptbundle file, enabling cheats in the console and then calling the script using the console command: CallGlobalScript 03b357d7-7a96-454f-a9d3-c80820416374
  12. This is something I have looked into a little. It's possible to switch around already implemented tracks, with a mod that changes all instances of the track in audio.gamedatabundle to a preferred existing track. I'm pretty sure the name of the track for ship board combat is called "mus_scr_deck_to_deck". As for adding/replacing tracks? That seems to require some extensive Wwise knowledge unfortunately. In theory it should be a simple matter... The audio files for every track is located in: "Pillars of Eternity II Deadfire\PillarsOfEternityII_Data\StreamingAssets\Audio\Windows" as a series of .wem (104473804.wem for example is the music that plays during character creation). These are all seemingly catalogued/indexed by music.txt (104473804 "mus_glb_character_creation"), and are then queued up either in audio.gamedatabundle or during a conversation. However all attempts to replace specific tracks with a .wem with the same name only seems to lead to silence. So there is likely something built into the file format itself that requires extra set up in Wwise, or maybe something in the music.txt that has to be updated in someway. It doesn't help that the documentation for Wwise, isn't especially user friendly. There is also the possibility that the implementation of it for Deadfire is not the norm.
  13. I don't believe adding new NPCs to the game is currently something mods can do.
  14. There shouldn't be any issues, I think... The spectator stand is where you'll normally have to go if you've taken an alternate route on the island that leads to an entrance through the east gate. After the conversation with Humaire, you can use the inn and the merchants, but challenging the Tyrant of Decay (from the pool) is still required to progress. A solution that would be smoother is adding the level up script into the conversationbundle so that it will trigger on a node (ideally the last line) in the conversation?
  15. This all sounds really cool! Is it possible to start the player in the spectator stands where the conversation with Humaire takes place? This would enable the player access to the inkeeper and merchants so as to prepare before fighting the Tyrant of Decay through the pool. I did attempt this route using the WIP script you posted (setting the map to "954d25be-df8f-4f44-8873-c3e92aa90e36") but I think I might be doing something wrong as I keep getting stuck as a ghost version of the character I created. I agree with @Elric Galad's post. Aiming the mod towards those who have experience with Deadfire is really the best approach. I can't personally offer much opinion when it comes to balanced I'm afraid. It's been quite a long time since I played through Deadfire and this expansion. I have yet to start a second playthrough. Most of the time I just end up loading old saves to experiment with little mods that'll go no where
  16. Yup, Deadfire for the most part is much more modding friendly than the first game.
  17. There is a mod manager accessed through the main menu options, where you'll be able to to change the load order of things.
  18. File name and Transcript of each line said during the Soul Fragment conversation. For those who might want to add it to their custom voice using the Custom Soul Voice mod. !This includes Spoilers for Deadfire's 3rd act, as well as highlighting some Pillars of Eternity 1 Decisions!
  19. Sure, this is working on my end: { "GameDataObjects": [ { "$type": "Game.GameData.ItemGameData, Assembly-CSharp", "DebugName": "INN_ANYWHERE_Test", "ID": "d62bc9d4-6e6c-4ecf-8770-a9a7675b0439", "Components": [ { "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 25124, "DescriptionText": 25125, "DescriptionTextTactical": -1, "FilterType": "Quest", "InventoryAudioEventListID": "32023afc-c1c3-4b6a-bcfd-77bde56ee6c3", "IsQuestItem": "true", "IsIngredient": "false", "IsCurrency": "false", "IsAdventuringItem": "false", "IsJunk": "false", "CanSellForFullValue": "false", "MaxStackSize": 1, "NeverDropAsLoot": "false", "CanBePickpocketed": "true", "IsUnique": "false", "Value": 10, "IconTextureSmall": "gui/icons/items/misc/book_paper_s.png", "IconTextureLarge": "gui/icons/items/misc/book_paper_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [ { "DisplayConditional": { "Operator": 0, "Components": [] }, "DisplayString": 465, "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [ { "Data": { "FullName": "Void OpenInn(Guid)", "Parameters": ["6f88c8c2-e6b7-4429-9407-5ae6c011d4fd"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ], "IsPlaceholder": "false" } ] }, { "$type": "Game.GameData.ModScriptHookGameData, Assembly-CSharp", "DebugName": "Grant_Inn_Item_ScriptHook", "ID": "41b4ebb8-13a4-4bc4-81bf-366e8175d49e", "Components": [ { "$type": "Game.GameData.ModScriptHookComponent, Assembly-CSharp", "RunOnlyOnce": "false", "SucceedOnlyOnce": "true", "Script": { "Conditional": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsInActiveScene(Guid)", "Parameters": [ "546e5d97-c234-46dc-9439-b23aafc02198" ], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": true, "Operator": 0 } ] }, "Scripts": [ { "Data": { "FullName": "Void GiveItems(Guid, Int32)", "Parameters": [ "d62bc9d4-6e6c-4ecf-8770-a9a7675b0439", "1" ] }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ] } ] } I dunno, possibly just something as simple as those GUID were among a number of others generated as a batch?
  20. For the Inn window to appear when you click the button you need to change "Void StartConversation(Guid, Guid, Int32)" to "Void OpenInn(Guid)" and remove all the Parameters except the GUID for the Inn. "InspectOnUseButton": [ { "DisplayConditional": { "Operator": 0, "Components": [] }, "DisplayString": 5249, "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [ { "Data": { "FullName": "Void OpenInn(Guid)", "Parameters": ["6f88c8c2-e6b7-4429-9407-5ae6c011d4fd"], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ], Yup 5249 is the text that displays on the button. I'll be honest I don't know a whole lot about scripting and creating mod script hooks. So when I test item mods I just add them to the stash using a modified version of noqn's NewGame+
  21. Oh yeah, that's a really strange omission. Looking through the enumerations section, under WindowType there is mention of "PartyManagment". But there seems to be no script that seems to call this type directly and the only context for it from what I can tell is in relation to UI audio events.
  22. That is odd. I would have assumed there would be a script that opens the party management window directly. Opening an inn does seem to be the best solution, and after a quick test I can confirm what @Noqn says does indeed work.
  23. The ship combat was something I tried to get into on my first playthrough but fell off of after a while of every single engagement seeming to take a really really long time to play out. I don't know if it is just not explained very well, or that I missed something in the explantion of the mechanics. But it got frustrating to the point that most of the game I took long routes to avoid enemy ships, or would closed to board right away. Which is a real shame as captaining a ship battle in the age of sail is a really neat idea! You are missing the flame thrower ship weapons from your list: CANNON Name GUID Damage Range Reload Cost Magranite Firethrower 49e185d8-48e8-4d63-a358-3f50e1971b77 6 to 9 0-75m 2 3000 Wyrmtongue 2f82b41e-63dd-43d1-9475-c37af23f96cb 6 to 9 0-400m 5 3000 Magran Firethrower was added with the ship focused DLC "Scalawags Pack". The data of which is in the "laxc_exported" folder in the "laxc_ships.gamedatabundle" file (Under the name "Aedyran Firethower"). From what little I played with these the short range, was a neat idea, but always lead to the enemy ship closing to board before or just after I had fired them. The other weird thing, description for the Wyrmtongue mentions there being a chance of starting a fire on the enemy deck/rigging/crew. Which ever happened when I hit with them, so either a very low chance or just a bit of confusing fluff. I'm tempted to assume it to be the latter as the Magran Firethrower has no mention of this. Also really disappointed that there is no ship battle with a kraken (or other beat of Galawain), but I can imagine that would have been strange to implement in to the ship to ship interface. So probably for the best
  24. I have managed to get pretty much everything working (Preview video under the spoiler) with the mod I posted about, but have been hung up for several months now on an inconsistent audio issue with a couple of the lines. The following video contains spoilers for a scripted interaction that leads into the final act of Deadfire, as well as mention of one of the end game decisions of Pillars of Eternity 1! As mentioned in my last post the mod works by changing the SpeakerID for specific Narrator lines in the .conversationbundle of a scripted interaction. It is indeed possible for the game to actually use audio files based on the Player Character's currently selected voice set. This is done simply by replacing the "SpeakerGuid" for the lines with the unique GUID that corresponds to the Watcher ("b1a8e901-0000-0000-0000-000000000000"). This means if the Watcher is using a custom voice set that has those audio files the (Spoiler) can actually sound like the Watcher during the interaction. Additionally since no audio files are actually replaced, if the mod is disabled the audio will revert back to Ashley Johnson's narration (or silence in the case of the No Narrator mod). The plan once I have worked out the aforementioned issues would be to add the audio files as an optional extra to my pre-existing custom voice mod, and release the modified .conversationbundle as a separate mod. That way it is easy to toggle in the options menu mod manager, and open to others to use if they want to do the same for their own custom voice mod!
×
×
  • Create New...