Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by Grape_You_In_The_Mouth

  1. Thanks for doing this. I'll be interested to see what you did with the ending, which I liked but definitely felt rushed on the 1st playthrough. Isn't it hard editing all those text strings? How do you keep track of them? You can't add new strings with skill/attribute checks, can you? I'd be worried it breaks linkages to the game but maybe it can be done? One of the rare things I enjoy about Pillars 2 is how it's about the struggle of the old gods versus the new. The quarreling petty pantheon is revolutionized by the humble gracious savior of the people. It seems to me to contain a direct analogy of Greco-Roman religion vs Christianity, and polytheism vs monotheism, with slightly different dynamics of punishment+order vs forgiveness+chaos. What do you think about the ending and what do you want to emphasize more? What messages do you want people to take away from it?
  2. So far we don't know how but we haven't tried hard enough. Check out the other big threads on this topic for more info on how frustrating this is.
  3. Since invisibility is just a status effect, can't you check the conditionals and triggers of those abilities? That's where I'd look first but I assume you already did if you succeeded with consumables.
  4. It's always great to get new unique items. This game desperately needs it imho
  5. I'd rather see new content to perfect the gameplay, but it's great to see people modding the vendors a lot more
  6. I implemented two types of spells similar to your concept of channeling. Inquisition in my priest mod lasts 10 seconds and disables you for the duration. I also have a Charging thread here recently where boots activate a modal that is canceled when another ability is used. It's not exactly what you want but the Charging effect could be reworked to do exactwhat you want.
  7. Barbarian still needs work. Are we bad enough dudes to save this class from the jaws of banality? Below are my ideas for future Barb abilities. Do you guys have any thoughts/ideas/memes? 2 - Reckless Abandon - +15 Accuracy, -10 All Defenses until 30s or you hit enemies 5 times, whichever is shorter 4 - Slam - Slam the ground for damage to nearby enemies, knocking them prone. If enemies are already prone, launch them in the air. 4 - Revelry - passive - 10% chance to gain 0% recovery time with your next action when hit or critically hit 4 - Riot - passive - when hit foe, keyword on them for 30s. If no keyword, +1 resource. 5 - Magic Eater - passive - +100 AllDefenses vs Spells for the first 10s of battle, clears when missed by a Spell, granting +25 Max HP until end of combat 5 - Onslaught - Gain +dmg effect that increases when in a new part of the battlefield - AoE on ground around you, keyword on you in the AOE, when keyword is off, after 1s new AoE around you, more bonus 5 - Territorial - passive - +5% damage for 30s when you engage a target 6 - Ransack - Dash to an opponent for heavy crush damage, dealing 50% of the damage to you. 7 - Heavy Ransack - Deals more damage, and increases the share of damage dealt to you from 50% to 100%. 7 - Spinning Ransack - Increases penetration by 2 and decreases the share of damage dealt to you from 50% to 25%. 7 - Explosive Ransack - Damage is dealt to an area, and you are dealt 100% of the damage regardless of any dealt. 6 - Bashful - Convert all damage to crush for 60s 6 - Ferocity - passive - gives more damage as you have more movement speed bonuses via Boolean HasMoveRateEffectWithValue(Guid, Operator, Single) 6 - Thrashing - passive - Full attack when you disengage a target 7 - Berserker's Blood - passive - +attack speed for hostile attacks when at lower health: +0-50% Attack Speed from 50 to 40% health, +50% when 40%, +75% when 35%, +100% when 30%, +125% when 25%, +150% when 20%, +175% when 15%, +200% when 10%, +300% when 5%, +400% when 0% This is done by passive when health is below 50%, base value -1.5, dynamic value InverseHealthRatio multiply by 5 The last two tiers of speed are created by trigger adjusting the value OnHealthPercentBelow 0.10, +0.75 to give a straight boost Or you could replace the passive OnHealthPercentBelow .10 to become base value 5, dynamic value HealthRatio multiply by -20 This creates +200% when 10%, +300% when 5%, and +400% when 0% It might also be possible to use WillApplyStatusEffectWithParentValueOnEvent to change this way, but maybe not 7 - Mountainous - Max health is increased by 10% of damaged received, in stacks lasting 30s. This ability lasts for the rest of combat. be sure to make it sourced from hostile targets in the AttackTARGET filter 7 - Dominating - passive - Full attack when you engage a target 8 - Inner Spirit - +10 Might, damage dealt reduces Constitution in stacks of 1% 8 - Battle Mending - Healing per Constitution and lack of health, (+3 per 3s per 3 Constitution) x % Max health empty 9 - Skycrasher - Leap animation up for 4s in the air, slam back down, full attack 2x, 50 damage crush AoE 9 - Last Stand - Barring Death's Door 8s, once per encounter at 15% health
  8. I think it's the "OneHitUse" instead of doing the triggers OnPostAttackRollCalculated that the AoEMult Barbaric Blow uses. I can't recall for certain, but I think the other OneHitUse abilities don't actually work except for the first hit, if at all. OneHitUse is always a huge pain with these WeaponAttackAbilities because it fizzles with the attack's hit, as it starts before the hit then triggers from the hit. I've spent weeks debugging it in the beginning of my coding skills.
  9. This would be very tough! You'd have to know a lot of the code in the game rather than deal with the easy JSON exports for tweaking abilities, items, and game settings
  10. You should make it happen, it would only require changing one thing. This is the status effect that links crits to the second effect, gaining focus: "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp", "DebugName": "The_Complete_Self_SE_ApplyOnEvent", "ID": "962ed740-cbec-4da4-8055-241acaf726e0", It's in the statuseffects.gamedatabundle file. In that specific section of code where this status effect is, it limits it to Cipher attacks via: "ClassTypeID": "ccdc9675-e2a7-46fa-83e9-7a5368b56265" So just change it to the wizard's class ID, acfd1303-4699-4939-91eb-6ac46d4af0bd. This would do exactly what you want, but now you'd want to copy these effects and their linked ability code, and create a sub-class out of it. Rename the DebugName, create new IDs for them, create new text strings to describe them, etc.
  11. Carnage works via ApplyStatusEffectToEnemyOnEvent --> AttackTargetOnEvent [Primary], for attacking with the primary weapon, and then again for a "Secondary" in the AttackOverrideValue. All of this is in the StatusEffects gamedatabundle. Not sure how the stag carnage applies all the effects to everyone but they might have changed the stag's melee attack data to be an AoE that deals less damage (if it wasn't before) and that would spread all the effects in that way. This would be instead of the way Carnage works, because Carnage has to deal with whatever weapons the player chooses to equip in either slot. The stag doesn't equip items, so they probably didn't even make it like Carnage.
  12. The small icons for items should actually be 50x50, to show correctly in the tooltip and the inventory icons when you wear them.
  13. Not sure if anyone has seen any charging abilities in the game, but I couldn't find any and finally figured out how to make one. By charging abilities, I mean abilities that make you "charge up" by dedicating time to the ability, and allow you to release the effect at any time, and the effect is bigger the more you charged up. Megaman's or Samus's blaster are good examples. The abilities are going to be on an item I'm making called Evelyn's Jaunt. I made two modal abilities and grouped them together via a modal group: { "$type": "Game.GameData.ModalGroupGameData, Assembly-CSharp", "DebugName": "MG_evelyns_jaunt", "ID": "113f042e-5a0e-4b62-95e3-a20bdf957622", "Components": [ { "$type": "Game.GameData.ModalGroupComponent, Assembly-CSharp", "DisplayName": 305151077, "MustBeActive": "true" } ] } Then I made one ability charge up ("Charge Up") and the other bursts you into the air ("Liftoff"). Charge Up will stack effects at a rapid pace, which will be applied OnClear via ApplyStatusEffectOnEvent. But we need a fast tick rate, so I made one to be 10x per second: { "$type": "Game.GameData.IntervalRateGameData, Assembly-CSharp", "DebugName": "Interval_10_Per_Second_evelynsjaunt", "ID": "222ecc89-771e-4a80-b749-d1e552205d3b", "Components": [ { "$type": "Game.GameData.IntervalRateComponent, Assembly-CSharp", "Interval": 0.1, "OnlyWhileMoving": "false" } ] }, The Charge Up modal ability is: Ability -> Attack (simple melee attack only to apply status effects) -> ApplyStatusEffectonEvent [OnInterval] -> ApplyStatusEffectOnEvent [OnClear] -> Accuracy stacking bonus, launching stacking effect, and another ApplyStatusEffectonEvent using OnClear after 1s to create visual effects and restrictions to the player at the perfect time Unfortunately, the VerticalLaunch effect is inconsistent after multiple uses, so I had to make it for a set amount of time and make some graphics changes to hide the limitation. However, the Accuracy and other effects stack just fine. I used AddDurationIfAlreadyApplied on the visual effects to last as long as the stacking bonuses, and then made them with "Event": "OnStop" to occur at the end of the status effects. Then we have the Liftoff modal ability, which is just an attack with a keyword. This keyword will be used to clear the effects built up during Charge Up, by creating this in the Charge Up trigger settings for the 1st & 2nd ApplyStatusEffectOnEvent : "TriggerAdjustment": { "TriggerOnEvent": "OnLaunchesAttack", "TriggerOffEvent": "None", "ValidateWithAttackFilter": "true", "ParamValue": 0, "ValueAdjustment": 0, "DurationAdjustment": 0, "ResetTriggerOnEffectTimeout": "false", "MaxTriggerCount": 1, "IgnoreMaxTriggerCount": "false", "RemoveEffectAtMax": "true", "ChanceToTrigger": 1 }, Then on the AttackFilter we put in the keyword that we created and assigned to the Liftoff modal ability's attack. Keywords can be made via this code: { "$type": "Game.GameData.KeywordGameData, Assembly-CSharp", "DebugName": "evelyns_jaunt_Keyword", "ID": "d9f0545a-6897-4b2e-ae36-b9b3e4082fbd", "Components": [ { "$type": "Game.GameData.KeywordComponent, Assembly-CSharp", "GuiDisplayString": 305151076, "AbilitiesDisplayString": -1, "Description": -1, "OverridePluralEffect": -1, "Icon": "", "TintableIcon": "" } ] }, Then you put that keyword ID at the beginning of the Liftoff modal's attack and make sure it's in the attack filter of the Charge Up modal's 2nd ApplyStatusEffectOnEvent. Now when we use Charge Up, we gain stacks every 0.1 seconds, and when we use Liftoff, our Charge Up effects recognize it and are removed, which triggers them to apply all at once because they're set to OnClear. To be precise, "OnClear" is at the "EventValue" not the ApplicationType, which can be confusing. ApplicationType is almost always ApplyOnStart because it has limited options. But wait: What could go wrong? Well, you'll always have problems with visual effects and deciding when to use HideFromUI or HideFromCombatTooltip. But what's really wrong with this? We probably don't want to have the player able to use the Charge Up modal again while the current effects are still applied. Maybe you do, but for my ability, that would be too good, so we have to disable the other modal ability somehow. How do you disable a modal ability? It's actually really hard. DisableKeywordAbilities didn't work for me. DisableModalAbilities removed all the effects of the Charge Up, even though I don't need to use that modal anymore! Instead, I had to apply a Conditional to the Charge Up ability so that whenever I had a status effect with a Charge Up keyword used, the Charge Up ability deactivated, then reactivated afterwards: First I created the new keyword (using the same method as before) for Charge Up (this is a new keyword) and put it on a status effect that would last as long as the others. "KeywordsIDs": [ "4d7d49fc-2305-4c8b-9fe1-5c9c0c244c06" ], Then I created the Conditional on the Charge Up ability: "ActivationPrerequisites": { "Conditional": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean HasStatusEffectWithKeyword(Guid, Guid)", "Parameters": [ "7d150000-0000-0000-0000-000000000000", "4d7d49fc-2305-4c8b-9fe1-5c9c0c244c06" ], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": true, "Operator": 0 } ] } }, "ApplicationPrerequisites": { "Conditional": { "Operator": 0, "Components": [] } }, "DeactivationPrerequisites": { "Conditional": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean HasStatusEffectWithKeyword(Guid, Guid)", "Parameters": [ "7d150000-0000-0000-0000-000000000000", "4d7d49fc-2305-4c8b-9fe1-5c9c0c244c06" ], "Flags": "", "UnrealCall": "", "FunctionHash": 0, "ParameterHash": 0 }, "Not": false, "Operator": 0 } ] } }, Now this says the Charge Up ability will Deactivate when I have a Charge Up status effect with my new Charge Up keyword, and activate again when that effect is gone. Now you can charge up and blast off into the air, and a whole new type of abilities are available to Deadfire. What are the downsides to charging abilities? They take up valuable space on the screen, but only one space per modal group. I'm not sure what else, but I think it's really cool.
  14. Unfortunately you do need the conditionals to prevent being able to upgrade everything. To answer your earlier question, that's what the conditionals there are for--limiting availability. Something cool I just learned is that you can add your own item sketches in the top of the item data and just put the 300x240 png in that location: "PencilSketchTexture": "gui/itemsketches/sketch_solo_hero_back.png"
  15. Actually, OnHit would never work ever, because it has to be OnPlainHit. OnHit only works for visual effects!
  16. 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.
  17. 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.
  18. 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.
  19. 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
  20. Arkemyr's Robe: ItemMod ID-->StatusEffect ApplyStatusEffectOnEvent, event value: OnHit, AttackTargetFilter healthOperator: LessThanOrEqualTo, HealthPercentage: 0.25, StatusEffectValueIDs: guid of your next status effect-->Dazzling Lights StatusEffect but with infinite duration
  21. Pro-Tip: The VFX can prevent the ability from loading if you put Event": "OnHit" for a SE that itself doesn't check for an event
  • Create New...