-
Posts
243 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Everything posted by Grape_You_In_The_Mouth
-
Triggers
Grape_You_In_The_Mouth replied to Svartypops's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
The above example wouldn't actually work unless your ApplyStatusEffectOnEvent used an EventValue of OnHitOrCriticallyHit, because if it was just OnHit then there'd be no damage applied when you are critically hit. -
Triggers
Grape_You_In_The_Mouth replied to Svartypops's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Triggers in Deadfire refer to something different. In the Trigger section of the status effects you can set actions that would trigger changes to the status effect. You can change duration, status effect value, etc. What you're talking about is "how to trigger an effect after an action", which could also be called triggers but there is a specific use for the term trigger in Deadfire. You ApplyStatusEffectOnEvent to have a status effect create when the EventValue occurs. For instance, let's say you make that ApplyStatusEfectOnEvent status to create a Damage status effect OnHit. So Whenever you're hit, you create damage to yourself. But if you wanted to increase the damage OnCriticallyHit, then you'd put that in the TriggerOnEvent for the Damage status effect, and ValueAdjustment 5, to increase the damage by 5. TriggerOffEvent would be OnDamaged to clear the bonus damage before the next round of hits. -
OnHitOrCriticallyHit just excludes grazes, that's the difference. OnDamaged is better, you were right there. Another problem with OnDamaged would be it applying a lot during rapid damage ticking effects or wall spells, etc. You may want to put "hostile" instead of "default" in the attack filter so it doesn't trigger if you damage or hit yourself. I don't know if it filters for attack hostility normally, but I don't often filter for hostile attacks so I guess it does check automatically. Changing the duration of dazzling lights to infinite was a dumb suggestion from me (as I mentioned before), but the ApplyOnEvent should be infinite. You are correct that if you wanted different durations you'd have to make new copies of the spells and ideally change their guids to prevent overwrite, and change the names to avoid confusion, but you could always point to different affliction statuses if you want to save the time and work.
-
I'm glad that you said it worked but doesn't that combat log say that Dazzling Lights started because you hit someone else? I thought you wanted it to start when you were hit. OnHitOrCriticallyHit is the correct event trigger for that. Btw, the Trigger section of statuseffects is for altering the status on events. So if you wanted to adjust the duration OnHit, you could do that. And I was wrong to say that the Dazzling Lights should have infinite duration, that was just dumb
-
1. Install visual studio code 2. Configure the settings to recognize .gamedatabundle files as json format as shown on the tutorial 3. Copy an existing mod - atlas folder is for icons, design folder is for code, localized folder is for names and descriptions for your code 4. Make the ability in Visual Studio. The game data sequence is Ability or Item --> Attacks --> StatusEffects. Those link from one to the other 5. Before you start, you'll want to open up a browser with one tab for the random guid generator website, one tab for the Obsidian enumeration documentation (Concepts documentation), and one tab on the Fextralife abilities list. GUIDs are the unique identifiers for a code section, used for linking together and referencing them. 6. Create a text file for the text strings you're going to make to name and describe the ability, item, statuseffect. All of these will have names so you'll need to keep a running list of the text string number you give it. Make it a big number so other people don't choose the same one, then each new number is 1+ the previous number 7. It's extremely helpful to have a textfile of helpful guids, such as keywords, animation times, class IDs, tick rates, etc. 8. Copy the exported folder in your game file and look at the copies for reference. Look at similar abilities and statuses and use those as a base for your new ability. 9. Create a ring that gives you the ability so you can just use the console command giveitem ring_name and then put the ring on you, and test it faster that way to see if it works. Visual effects are a pain. If the game won't load because of spinning gears on the main menu, you screwed up your localization text strings. 10. Icons are created using the Sprite Sheet Packer in the tutorial. Just make one big sprite sheet and don't worry about other folders with the same name as your sprite sheet. It's all loaded. The icon location is ...../abilities/icon_name.png 11. Use the Append method in the tutorial to add the ability to the ability tree. Subclasses use special Conditional code that you have to copy and use. All of the base code is in the pt_progressiontables file 12. Your first ability might take 40 hours. If you keep doing it and make nice text files to help you reference easier, you can make an ability as fast as 30 minutes without testing it.
-
I couldn't figure out how to copy a spell effect from the vfx bundle and create a new record, or even alter an existing one. Has anyone discovered anything? It would be killer to be able to change vfx so they can scale, loop, or create copies with a different color.
- 20 replies
-
Pro-Tip: +OnMovementEnd sometimes "doesn't work" because it triggers automatically an extra time, immediately when you don't want it to! - So if you have it cancel on the 2nd time, via MaxTriggerCount: 2, RemoveEffectAtMax: True, then it works as intended - I can't tell when exactly it triggers, but apparently at the end of casting, and at rest. Maybe the beginning of the current action.
-
the characters.gamedatabundle links to the PT_Serafen table 4d20749f-17b8-4ddf-9517-e5396172c99a But he has more tables in the progressiontables.gamedatabundle, so you'd have to see how each of these might interact. Does all of his PT_Serafen abilities exist with other abilities if you choose a multiclass? I don't know. Are his tables special or do they only have the same abilities as everyone else? PT_Serafen certainly has different abilities but I'm not sure about the rest of them. It looks like you'd just have to replace the PT_Serafen_Barbarian table but that's from my cursory view. It would be an easy copy+paste job, I think. Usually all of the PT tables are independent of each other, so there is a new one for each variant. Alternatively you could use the append method to add the subclass abilities to his tables but that would be more difficult because subclasses have different versions of abilities already on those tables.
-
There are a few simple reasons these issues may be happening, but you probably didn't code them wrong so I don't know if they would be applicable. If you chose to hide it from the gui or if it's an effect from multiple layers of linked effects, then it won't show up. If the effect isn't applied directly from a hit, but from linked effects connected to it, then it might not show in the combat log.
- 1 reply
-
- 1
-
-
If you edit it to say loop: true like other effects then you'll see what happens. Either it works, it works abnormally, or it doesn't work at all. You'd have to change the asset data (and possibly graphics) via the UABE to make it enable looping, but I have no idea how to do that other than the flashes of brilliance provided to this forum by Flavh69X (I can't recall if that's his correct username).
-
I've made tutorials on how to change abilities, but the bad news is that there is no status for invisible. You'd have to add a custom keyword named "Invisible" or something and add it to each status effect that creates the invisibility effect (which usually is a material replacement effect). Then you'd make a passive ability that is activated while the character has that status effect, or has that keyword, and deactivated when the reverse is true. That would be done via a "conditional" which is done similarly in many other abilities.