Jump to content

omgFIREBALLS

Members
  • Posts

    1201
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by omgFIREBALLS

  1. All three consisted of chanters only. The thing is, once I unlock ogres, I feel invincible, because I know nothing can kill them as fast as I can replace them. That leaves only two problems - living long enough to summon them the first time, and staying far enough away that I don't die as collateral. Usually I can accomplish both of these with figurines keeping monsters busy while I build phrases. Usually. So anyway... Party 1 (level 11), Alpine Dragon: Went to the top right corner, attacked without speaking, threw figurines out, was a little hectic but I got to the ogres without losing anyone. I was cornered at that point and a breath at my ogres got me too. Party 2 (level 10), Adra Dragon: I lost 2 chanters pretty early, but she was blocked off by her own minions. I felt I had it under control and switched to some slower chants (Dragon Thrashed) to mop things up, but the Adragans stunned me too much, I fell behind on phrases and was more or less wiped by Unrelenting Storm. I was cornered and couldn't avoid them. Party 3 (level 10), Adra Dragon, "I learned much from last time", I had to scramble to save the poor chanter I used to talk to her because she got stunned for 12s immediately. After a minute or so of fighting uphill, I was once again cornered even if with ogres fighting for me, and she breathed on my whole party critting exactly everyone (they have abysmal reflex saves) and wiping me. Now, I know, I could (and should) just come back at a higher level, hence the hubris part. But, I was wondering if anyone knew some good cheese that would make this work. I need to keep these murder squads that oneshot my figurines busy and at a distance until I can summon ogres. Any suggestions?
  2. It's the latter, yes. No one has to have 19 on their own. And it's for... Correct. And it's for... There is some mildly ugly code digging for strings before and after each check, but sometimes a check ends the whole interaction and then there is no later string. If a check is -NONE FOUND- x3, it probably doesn't actually exist. There can be other reasons for not finding anything. The code isn't perfect but should generally provide you some nice context. I'm glad you like it I wanted to do even more, especially writing code that always figures out if a string is the result of a skill check or the trigger for one, but my situation has changed and I don't see myself returning to this project anytime soon.
  3. Edit: Never mind, resting didn't help but reloading did. Leaving it as a riddle for anyone who might enjoy it. My Watcher is permanently slowed, but there's no debuff to indicate it. Resting doesn't fix it. I am guessing I have some invisible debuff that I could remove with the console, but I need help figuring out what it could be. I probably got it from one of the first three bounties (not the ogre) or that jerk chanter in the middle of Magran's Fork. Either way, I'm in chapter the-city-hasn't-burned-yet. I also have 6 too little constitution, and at least 6 too little might. Probably related. Attribute tooltips do not explain the deficit. Any guesses?
  4. Would you agree the following logic holds? If a component has no siblings below it, its operator can be ignored. (I mean, this is sort of what Noqn said, but I don't know how large a scale it was supposed to apply to...) The JSON pasted means, according to Apotheosis: IF (the player is an Island Aumaua AND has Deadfire Archipelago as their culture) OR (Tekehu is in the party). One and, one or, but the JSON has six operators in it. 06_cv_biha, node 44. First operator (line 2): On the whole conditional, but this will never have a sibling. Ignore. Second operator (line 6): Preceding the race/culture check, does have a sibling (the Tekehu check). Do not ignore. This is the OR. Third operator (line 22): This is the race check. Has a sibling, the culture check. Do not ignore. This is the AND. Fourth operator (line 38): This is the culture check. It has no siblings below it. Ignore. Fifth operator (line 44): Preceding the Tekehu check. It has no siblings below it. Ignore. Sixth operator (line 59): This is the Tekehu check. It has no siblings below it. Ignore. I was doing a little test to see if the initial operator (the one on line 2) is always 0, and it turned out there are twenty-or-so cases of it being 1 (which means that 0 is by far the most common). I don't know if this is relevant, necessary or helpful... I figured perhaps it was just a hint that the first child would be an OR-clause, but re_si_crew_event_shore_leave node 24 for example has a 1 operator for its conditionals, but no components. "Conditionals": { "Operator": 1, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalExpression, OEIFormats", "Operator": 1, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsSubrace(Guid, Subrace)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "Island_Aumaua" ], "Flags": "", "UnrealCall": "", "FunctionHash": -1558632484, "ParameterHash": 1209903115 }, "Not": false, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsCulture(Guid, Guid)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "7093880b-7527-4087-a764-d6613701a025" ], "Flags": "", "UnrealCall": "", "FunctionHash": -714406469, "ParameterHash": 957745537 }, "Not": false, "Operator": 0 } ] }, { "$type": "OEIFormats.FlowCharts.ConditionalExpression, OEIFormats", "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsCompanionActiveInParty(Guid)", "Parameters": [ "b1a7e805-0000-0000-0000-000000000000" ], "Flags": "", "UnrealCall": "", "FunctionHash": 1667060059, "ParameterHash": 1635363358 }, "Not": false, "Operator": 0 } ] } ] }
  5. A problem I encountered in my compilation efforts is that sometimes the skill check is associated with the node you end up at if you pass the check, and sometimes with the node you cannot press unless you pass the check. Typically the first kind exists in scripted interactions, and the second in regular conversations, but not always. This was mostly an annoyance that I handled by including the strings of both the nodes before and after the skill check node, thus providing enough context to figure out which one is really the check and perhaps "what it's all about" too. However, now that I want to add alternate ways to pass the check, I can no longer be in doubt about this. I've been trying to find a pattern to no avail. The bottom of my post has four JSON entries, from which I removed a few parameters they all had in common. The first one is for a wilderness scripted interaction on Maje Island, in which you can choose to search the area. re_si_wilder_trap.conversationbundle The second one is the node you arrive at if you choose to search the area with the Watcher and the Watcher has 1 survival. This is what my program will consider the node associated with the skill check, as the skill check is a conditional on that node. re_si_wilder_trap.conversationbundle The third one is for an interaction with Bekarna in TFS, in which you can impress her by passing a 19 Arcana check. The option isn't available if you don't have 19 Arcana. This is what my program will consider the node associated with the skill check, as the skill check is a conditional on that node. lax03_00_cv_bekarna.conversationbundle The fourth one is the node you reach after wooing her with the 19 Arcana line. lax03_00_cv_bekarna.conversationbundle Here are some of my discarded theories: PlayerResponseNode always leads to skill checks: Negative, there are such nodes where there is a skill check neither on the source nor target nodes. TalkNode is always the result of a skill check: Negative, same reason. If a TalkNode has conditions, it's the result of a skill check: Mayyyybe, but there are TalkNodes with check conditionals on themselves, who also have links to other nodes, with checks (even if not necessarily skill checks) attached to those links. Check 00_cv_ruanu.conversationbundle, node 277, for example. If this is the logic, it's hyper spaghetti. Update: This logic might be waterproof! If the prior node has the Void InteractionSelectPartyMember(Int32) stuff in it, it's the "real" node. If that doesn't exist, the skill check node itself is. Now in theory, there can be multiple prior nodes, and at times there are, but probably not in these cases... Search the area { "$type": "OEIFormats.FlowCharts.Conversations.PlayerResponseNode, OEIFormats", "Persistence": 3, "NodeID": 290, "ContainerNodeID": -1, "Links": [ { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 290, "ToNodeID": 73, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } }, { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 290, "ToNodeID": 148, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } }, { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 290, "ToNodeID": 74, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } }, { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 290, "ToNodeID": 289, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } }, { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 290, "ToNodeID": 286, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } } ], "ClassExtender": { "ExtendedProperties": [ "SpeakerAnimation,0", "ListenerAnimation,0", "DoNotClearText,False", "FocusedSpeaker,", "VOEventOverride,None" ] }, "Conditionals": { "Operator": 0, "Components": [] }, "OnEnterScripts": [ { "Data": { "FullName": "Void InteractionSelectPartyMember(Int32)", "Parameters": [ "0" ], "Flags": "", "UnrealCall": "", "FunctionHash": 997632775, "ParameterHash": 1233874279 }, "Conditional": { "Operator": 0, "Components": [] } } ], "OnExitScripts": [], "OnUpdateScripts": [] } Survival 1 Watcher skill check { "$type": "OEIFormats.FlowCharts.Conversations.TalkNode, OEIFormats", "EmotionType": "", "EmotionStrength": 0.5, "PersistEmotion": true, "EmotionDelay": 0.0, "SpeakerGuid": "6a99a109-0000-0000-0000-000000000000", "ListenerGuid": "b1a8e901-0000-0000-0000-000000000000", "ExternalVO": "", "HasVO": false, "Persistence": 0, "NodeID": 73, "ContainerNodeID": -1, "Links": [ { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 73, "ToNodeID": 75, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } } ], "ClassExtender": { "ExtendedProperties": [ "SpeakerAnimation,0", "ListenerAnimation,0", "DoNotClearText,False", "FocusedSpeaker,6a99a109-0000-0000-0000-000000000000", "VOEventOverride,None" ] }, "Conditionals": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean AreGuidsSameObject(Guid, Guid)", "Parameters": [ "4e3d0000-0000-0000-0000-000000000000", "b1a8e901-0000-0000-0000-000000000000" ], "Flags": "", "UnrealCall": "", "FunctionHash": -2074419224, "ParameterHash": -790561223 }, "Not": false, "Operator": 0 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsSkillValue(Guid, Guid, Operator, Int32, Boolean, Boolean)", "Parameters": [ "4e3d0000-0000-0000-0000-000000000000", "9c7962b8-bf69-4670-ba67-acc86a09fca8", "GreaterThanOrEqualTo", "1", "True", "False" ], "Flags": "", "UnrealCall": "", "FunctionHash": 193829831, "ParameterHash": 691694871 }, "Not": false, "Operator": 1 } ] }, "OnEnterScripts": [], "OnExitScripts": [], "OnUpdateScripts": [] } You can press me if you have Arcana 19 { "$type": "OEIFormats.FlowCharts.Conversations.PlayerResponseNode, OEIFormats", "Persistence": 3, "NodeID": 160, "ContainerNodeID": -1, "Links": [ { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 160, "ToNodeID": 163, "PointsToGhost": false, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } } ], "ClassExtender": { "ExtendedProperties": [ "SpeakerAnimation,0", "ListenerAnimation,0", "DoNotClearText,False", "FocusedSpeaker,", "VOEventOverride,None" ] }, "Conditionals": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsSkillValue(Guid, Guid, Operator, Int32, Boolean, Boolean)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "e5f33551-ec5c-4cc8-b5f2-1eb03d210374", "GreaterThanOrEqualTo", "19", "True", "False" ], "Flags": "", "UnrealCall": "", "FunctionHash": 193829831, "ParameterHash": -409713188 }, "Not": false, "Operator": 0 } ] }, "OnEnterScripts": [], "OnExitScripts": [], "OnUpdateScripts": [] } Gellarde, a fellow nerd, sayeth Bekarna { "$type": "OEIFormats.FlowCharts.Conversations.TalkNode, OEIFormats", "EmotionType": "", "EmotionStrength": 0.5, "PersistEmotion": true, "EmotionDelay": 0.0, "SpeakerGuid": "934adb9c-d294-46b0-8dd7-5e6d79d7000d", "ListenerGuid": "b1a8e901-0000-0000-0000-000000000000", "ExternalVO": "", "HasVO": true, "Persistence": 0, "NodeID": 163, "ContainerNodeID": -1, "Links": [ { "$type": "OEIFormats.FlowCharts.Conversations.DialogueLink, OEIFormats", "RandomWeight": 1, "PlayQuestionNodeVO": true, "QuestionNodeTextDisplay": 0, "FromNodeID": 163, "ToNodeID": 146, "PointsToGhost": true, "Conditionals": { "Operator": 0, "Components": [] }, "ClassExtender": { "ExtendedProperties": [] } } ], "ClassExtender": { "ExtendedProperties": [ "SpeakerAnimation,0", "ListenerAnimation,0", "DoNotClearText,False", "FocusedSpeaker,934adb9c-d294-46b0-8dd7-5e6d79d7000d", "VOEventOverride,None" ] }, "Conditionals": { "Operator": 0, "Components": [] }, "OnEnterScripts": [], "OnExitScripts": [], "OnUpdateScripts": [] }
  6. All, Party Assist These are typically challenges in scripted interactions that everyone has to pass, like climbing or sneaking. Athletics Stealth =============================================================== All, No Assist A few physical challenges that nobody gets to help anyone with! Athletics =============================================================== Current These skill checks are given to whichever character you use to interact with the object. The Alchemy checks involve two objects in the bowels in The Forgotten Sanctum. The 18 Sleight of Hand check can substitute one of the Alchemy checks. The 5 Sleight of Hand check happens on the Wahaki island, as an assassination attempt. Alchemy (Party Assist) Sleight of Hand (Party Assist) Sleight of Hand (No Party Assist)
  7. Any, No Party Assist These are generally interactions in which you can select one character to tackle a challenge, and that character for some reason gets no help. Arcana Athletics Bluff Explosives History Mechanics Religion Sleight of Hand Stealth Survival
  8. Any, Party Assist These are generally interactions in which you can select one character to tackle a challenge. Alchemy Arcana Athletics Bluff Diplomacy Explosives History Insight Intimidate Mechanics Metaphysics Religion Sleight of Hand Stealth Streetwise Survival
  9. Watcher, No Party Assist These are usually conversations with gods or ones where you're forcibly alone. Alchemy Arcana Athletics Bluff Diplomacy History Insight Intimidate Mechanics Metaphysics Religion Sleight of Hand Stealth Streetwise Survival
  10. Watcher, Party Assist, continued Metaphysics Religion Sleight of Hand Stealth Streetwise Survival
  11. Watcher, Party Assist Pretty much all "in the game world" conversations fall under this category, where you still see your party, UI, etc. Alchemy Arcana Athletics Bluff
  12. This is a compilation of all skill checks found in the game. How it works The number on the left is the skill required. After that, there are three lines. The line associated with the skill check will be the first or the second; the others are there to provide context. The flow of the conversation is always top to bottom. Sometimes there isn't a line because the check is at the beginning/end of an interaction or it's a ghost node that immediately sends you elsewhere. Because of how conversations can diverge and converge, sometimes there are several options. If the text is in red, it means this is what you will see if you fail the skill check. Have this much skill to avoid that result. Scripted interactions only. The wrong line of the three may be highlighted, but it generally holds. What is Party Assist? Essentially, the party member attempting to pass a skill check uses their full skill plus a portion of the rest of the party's skill. Read more here. Future work Update current data with alternate ways to pass the skill checks. Update current data with additional requirements - some checks are AND/OR constructs. Proofreading info A skill comparison can be <=, <, > or >=. Or =, but it's never used. It can also be negated, so not <= means >. This is a minor brain bomb to parse, so it's possible some stuff ended up wrong. There are also checks that are unreachable (no sequence of interactions will lead to them), but still get found by my parsing and end up in this thread. Some lines will also look strange or not really related to the skill due to the trigger/result problem I described in the first paragraph. I will not be fixing individual errors, but if a pattern emerges that speaks of a programming mistake, I will try to fix it and post the info again. It's half an hour two hours of work, so... I'll just make it clear here that both the data digging and the formatting are automated, so "minor adjustments" are not really a thing, just code fixes. It's very cumbersome to edit these posts - their size alone slows my computer down. Think then what happens when added info makes a post too large for the forum to accept it, and I have to redistribute everything. Thanks to @Kvellen and @Noqn for helping me make sense of the data!
  13. I swear to Abydon, every time I think I've overcome the final unexpected quirk that stands between me and a realistic representation of these skill checks... Does it matter then, what the operator is for the final conditional of each conditional expression? Like your example is "actually" (Dwarf) OR (Orlan AND Athletics < 5 AND [here ends the story]), so it might as well be that the Athletics check had a 1 operator because (Dwarf) OR (Orlan AND Athletics < 5 OR [here ends the story]) are effectively the same? Because I'm sure I've seen expressions where the conditionals' operators weren't the same, which made this all that much harder to understand.
  14. (since forum troubleshooting has a thread in this category, I thought this might go here as well) I'm looking to post some very comprehensive Deadfire skill check compilations. It's become quite the project. As one part of it, I need my program to be able to generate well-formatted text that I can just copy/paste into a post. Tables, I need tables. This post has a layout that I would like to build upon, but I cannot figure out how to post a table like that, let alone how to write raw text that translates into that. Can I get out of WYSIWYG-mode and write code to generate tables? I want to use other kinds of formatting too (bold, color, etc), so I think I really need to be able to rawtext this somehow I see that if I make a [ b ]hello[ /b ] post, that actually becomes bold, so there is hope for rawtexting! I contacted Noqn (who used the table) and it seems that it was done by pasting Rich Text. Still don't know of a way to rawtext that, but there's at least a way now. Now using this post as testing grounds...
  15. According to Apotheosis (which we trust), the code at the bottom translates to IF (Dwarf OR Orlan) AND (Athletics < 5) Now, the Dwarf/Orlan/Athletics checks I understand, but not quite how the AND/OR is constructed. I am thinking the Operator value has something to do with it, yet I can't come up with a reasoning that holds. (also, weird that it checks the Watcher when this is a choose-your-champion interaction) BTW, the file is 00_cv_poko_kohara_well.conversationbundle, dealing with going down the well, well, to grab some gems. The code below (do we get to call JSON code?) is about reaching the bag being a struggle for short races. Node 16. "Conditionals": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalExpression, OEIFormats", "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsRace(Guid, Guid)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "25308722-9480-477a-94cf-d40b6fd0886e" ], "Flags": "", "UnrealCall": "", "FunctionHash": 1545820124, "ParameterHash": 712917969 }, "Not": false, "Operator": 1 }, { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsRace(Guid, Guid)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "1f60b08e-1966-4bb6-8cdb-757294dcc18a" ], "Flags": "", "UnrealCall": "", "FunctionHash": 1545820124, "ParameterHash": -1216247160 }, "Not": false, "Operator": 1 } ] }, { "$type": "OEIFormats.FlowCharts.ConditionalExpression, OEIFormats", "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean IsSkillValue(Guid, Guid, Operator, Int32, Boolean, Boolean)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "fefc4d3d-250d-4c32-85e0-62a851240e62", "LessThan", "5", "False", "False" ], "Flags": "", "UnrealCall": "", "FunctionHash": 193829831, "ParameterHash": -1326280703 }, "Not": false, "Operator": 0 } ] } ] }
×
×
  • Create New...