-
Posts
489 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Blogs
Everything posted by Noqn
-
Bump! Turns out you can actually set which specific scene to play when starting a new game Secondly, I made a script hook for triggering the necessary stuff: Conditionals IsInScene Player AR_LAX01_0002_Arena_Lobby IsGlobalValue b_Character_Creation_Complete EqualTo 0 ('b_Character_Creation_Complete' is ordinarily set to 1 in the prologue, now we know that this is not a vanilla playthrough!) Scripts GiveItemsToObject [weapon rack] s_ItemTrigger_S4_Armoire GiveItems LAX01_Trinket_Muatus_Head 1 CallGlobalScript s4_QuestInitialization OpenCharacterCreation s4_QuestInitialization is basically a global script that sets up the necessary quest variables so that the SSS quest chain can proceed correctly, and is also required for the arena guard cutscene to actually trigger... StartQuest [The Proving] SetGlobalValue LAX1_n_talked_to_steward 2 SetGlobalValue LAX1_n_Main_Quest_01_Stage 1 SetGlobalValue LAX1_n_Main_Quest_01_Stage 2 ActivateObject [The lever that opens the door] 1 s_ItemTrigger_S4_Armoire is an item masquerading as a simple coin, except it triggers a script when it is picked up! (It also disposes of itself instantly since it has "IsCurrency: True") Currently though it only triggers a global script which I've set to increase the Player level to 16. This has to be done separately from the scripthook which triggers Character Creation, since finalizing a new character annoyingly sets the Lv to 1 and Experience to 0... The whole "coin in a weapon rack" is the the smoothest solution I've got so far...
-
Adding new enemies to existing encounters is fairly quick and painless, at least random encounters. Within worldmap.gamedatabundle, look for WorldMapEncounterGameData -> WorldMapEncounterComponent -> CreatureSpawns Here I have edited the Rock-Stoper Rodul encounter so that he has no crewmates, by removing all other entries in the CreatureSpawns array { "GameDataObjects": [ { "$type": "Game.GameData.WorldMapEncounterGameData, Assembly-CSharp", "DebugName": "RE_SD_Rodul", "ID": "f4049eab-742e-4df5-845b-d262ece1502b", "Components": [ { "$type": "Game.GameData.WorldMapEncounterComponent, Assembly-CSharp", "CreatureSpawns": [ { "SpawnPrefab": "prefabs/characters/poe2_npcs/random_encounters/vtc_encounters/npc_re_captain_rodul.prefab", "SpawnType": "Boss", "AppearsInDifficulty": "15", "EmergeIndex": 0, "AlternateSpawnPrefab": "", "CrewKilled": 0 } ] } ] } ] } Here, I additionally added Hauani O Whe: { "GameDataObjects": [ { "$type": "Game.GameData.WorldMapEncounterGameData, Assembly-CSharp", "DebugName": "RE_SD_Rodul", "ID": "f4049eab-742e-4df5-845b-d262ece1502b", "Components": [ { "$type": "Game.GameData.WorldMapEncounterComponent, Assembly-CSharp", "CreatureSpawns": [ { "SpawnPrefab": "prefabs/characters/poe2_npcs/random_encounters/vtc_encounters/npc_re_captain_rodul.prefab", "SpawnType": "Boss", "AppearsInDifficulty": "15", "EmergeIndex": 0, "AlternateSpawnPrefab": "", "CrewKilled": 0 }, { "SpawnPrefab": "prefabs/characters/poe2_creatures/cre_ooze_black_mountainous.prefab", "SpawnType": "Any", "AppearsInDifficulty": "15", "EmergeIndex": 0, "AlternateSpawnPrefab": "", "CrewKilled": 1 } ] } ] } ] }
-
Agh, noticed one thing. Strengthened Bond (but not Defensive Bond) seems to already apply correctly to NPCs in vanilla (it only checks for Defensive Bond & Character LV). We could add only Defensive_Bond_Pet without its Strengthened_Bond_Pet counterpart, but then Defensive_Bond_Pet wouldn't be removed by the vanilla table... I'll test a version which adds Defensive_Bond_Pet, and a corresponding table entry which removes Defensive_Bond_Pet without adding a new ability.
-
Hi @Elric Galad, I finally got around tackling this issue... Download: Animal Companion Ability Fixes.zip Instead of editing the Progression Tables directly, I made a BaseProgressionTableAppend object for the Ranger table, as well one for each of the CharacterProgressionTable objects that included any of the abilities (apart from PT_Maia & PT_Maia_Ranger which actually had working conditionals...) With this implementation, I think you should be able to remove the "Highest Load Priority" package altogether and instead include these fixes in the base package Here are the specific abilities appended to the character progression tables: lv8 DefensiveBond lv11 Strengthened Bond lv15 Survival of the Fittest lv17 Superior Camouflage PT_NPC_Ranger_BeastmasterMelee_Antelope PT_NPC_Ranger_BeastmasterMelee_Bear PT_NPC_Ranger_BeastmasterMelee_Boar PT_NPC_Ranger_BeastmasterMelee_Gunhawk PT_NPC_Ranger_BeastmasterMelee_Lion lv8 DefensiveBond lv11 Strengthened Bond lv14 Survival of the Fittest lv17 Superior Camouflage PT_NPC_Ranger_BeastmasterMelee_Stag PT_NPC_Ranger_BeastmasterMelee_Wolf lv15 Survival of the Fittest lv17 Superior Camouflage PT_NPC_Ranger_Balanced_Antelope PT_NPC_Ranger_Balanced_Bear PT_NPC_Ranger_Balanced_Boar PT_NPC_Ranger_Balanced_Gunhawk PT_NPC_Ranger_Balanced_Lion PT_NPC_Ranger_Balanced_Stag PT_NPC_Ranger_Balanced_Wolf PT_NPC_Ranger_Offensive_Stag PT_NPC_Ranger_Offensive_Wolf LAX01_PT_NPC_Ranger_Balanced_Bear_Trinket lv15 Defensive Bond PT_NPC_Ranger_Barbarian_Wolf LAX02_PT_NPC_Ranger_Barbarian_Polar_Bear
-
I think you could utilize ActivationPrerequisites and DeactivationPrerequisites properties of the GenericAbilityComponent to implement this, together with the IsClassPowerPoolCount conditional. Using Brute Force as a passive ability example, something like this? [825817d4-1fb0-4e5c-bf84-473743ad98de] = Barbarian Class ID
-
You want to extract the folder ('Blessings Stuff') contained in the .zip archive to your override directory. (This is where you place all of your mod folders.) Since you have the game on Steam this should be ...\steamapps\common\Pillars of Eternity II Deadfire\PillarsOfEternityII_Data\override You might have to create the 'override' folder if it does not already exist in 'PillarsOfEternityII_Data'. The Steam copy of Deadfire sometimes shows false warnings about mod version incompatability, but you can ignore these. Also just to clarify, having mods won't prevent you from getting achievements!
-
This is a cool idea tbh, would probably have made grimoire selection + ability selection more interesting, though I guess something would have to be done with grimoire switching mid-combat. And no, you've not misunderstood grimores, it's as you describe that each cast take one resource from that level, regardless of which spell was cast.
-
I was thinking kinda like how the Burned Book of Law does it: "InspectOnUseButton": [ { "DisplayConditional": { "Operator": 0, "Components": [] }, "DisplayString": 5249, "Script": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [ { "Data": { "FullName": "Void StartConversation(Guid, Guid, Int32)", "Parameters": [ "b1a8e901-0000-0000-0000-000000000000", "408c88c5-9239-4268-92a9-b5548abec032", "0" ] }, "Conditional": { "Operator": 0, "Components": [] } } ] } } ], Like this the script will run whenever you press the item's talk/interact button, I think you can even rename the button.
-
"Scripts" is not a valid parameter (see the ScriptCallData structure) and should be removed. I think I see what you want to do, sadly the "Conditionals" property of the ShipCaptainComponent is a ConditionalExpression, and there's no way to call Scripts from here. Maybe you could run a ScriptHook which checks for IsInCombatEncounter (which conveniently is used exclusively for Ship Duels), and if so set DG_Global_Ship_Sunk to true?
-
Cool idea, I had similar thoughts before. Sadly ScriptHooks only trigger when you load a scene or open a new map, though I think it's possible to utilize the InspectOnUseButton property of an ItemComponent to trigger a script. IIRC that's how Modwyr opens conversations. As for Inns, try "6f88c8c2-e6b7-4429-9407-5ae6c011d4fd" - the ID of Port Maje's crew shop which is globally available and should allow you to edit the party.
-
I'm in love with this idea! I just did some small experiments with teleporting (and stranding) the player on SSS Island™ right after character creation by inserting scripts into the initial conversation with Eder, I thought that would be cool as well. My head is pretty slow now that my vacation is over though, so I can't promise fast results but as I said I love this idea, I woud definitely like to finalize it.
-
Oh I like the idea of adding healing received modifier to Con! StatusEffects annoyingly can't have dynamic values based on Attribute values, only Skill values and a few more stats. Though it would be possible to add a StatusEffect with one child effect for each Con value in the 3-35 range with corresponding healing multipliers and conditionals. The StatusEffect could be assigned to an Ability that's only visible in the character sheet, and that Ability appended to all CharacterProgressionTableGameData(?)
-
Triggers
Noqn replied to Svartypops's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Regarding ParameterHash & FunctionHash, the game ignores these properties during deserialization*, so you can safely write ScriptCallData objects without those lines in your mod files! *Snippet from decompiled ParseScriptCall method: else if (text.Equals("UnrealCall") || text.Equals("FunctionHash") || text.Equals("ParameterHash") || text.Equals("Flags")) { JsonUtilities.DiscardNextBlock(jsonReader); }