Jump to content

Recommended Posts

Posted (edited)

Greetings,
 
I've been trying to get this mod to work for a very long time but I can't for the life of me figure out why it wont work.
 
What I'm trying to do is to give my Rogue +1 guile every time he kills an enemy.
 
Setup:
 
When the rogue reaches level 1 he's given a new passive ability called "Endless Loop" (see #1).
The new passive ability is created using the GenericAbilityGameData tag (see #2).

Scoring a kill triggers a status effect (see #3) that rewards 1 guile (see #4).
 
Code:
 
#1 Progression Table Entry for the New Ability:
Rogue_Mod.gamedatabundle

 

{
    "Note": "PL 1 Unlock - The Endless Loop",
    "Category": "General",
    "UnlockStyle": "Unlock",
    "ActivationObject": "Self",
    "AddAbilityID": "8ae8458b-75e9-4d51-a8e8-e1c50e6701c4",
    "RemoveAbilityID": "00000000-0000-0000-0000-000000000000",
    "Prerequisites": {
        "MinimumCharacterLevel": 1,
        "PowerLevelRequirement": {
            "ClassID": "8efd7667-8bc9-4020-b7f6-5a91b9d04e48",
            "MinimumPowerLevel": 1
        },
        "RequiresAbilityID": "00000000-0000-0000-0000-000000000000",
        "Conditional": {
            "Operator": 0,
            "Components": []
        },
        "VisibilityConditional": {
            "Operator": 0,
            "Components": []
        },
        "IsMutuallyExclusiveUpgrade": "true"
    }
}

 


#2 Generic Ability Table:
Rogue_Endless.gamedatabundle

 

{
    "GameDataObjects": [{
        "$type": "Game.GameData.GenericAbilityGameData, Assembly-CSharp",
        "DebugName": "Rogue_Endless",
        "ID": "8ae8458b-75e9-4d51-a8e8-e1c50e6701c4",
        "Components": [{
            "$type": "Game.GameData.GenericAbilityComponent, Assembly-CSharp",
            "KeywordsIDs": [],
            "DisplayName": 271858309,
            "Description": 271858310,
            "UpgradeDescriptions": [],
            "UpgradedFromID": "00000000-0000-0000-0000-000000000000",
            "Vocalization": "NoVocalization",
            "Icon": "gui/icons/abilities/talents/ability_passive_utility.png",
            "UsageType": "None",
            "UsageValue": 0,
            "AbilityClassID": "8efd7667-8bc9-4020-b7f6-5a91b9d04e48",
            "AbilityLevel": 1,
            "IsPassive": "true",
            "StackingRuleOverride": "Default",
            "TriggerOnHit": "false",
            "IsModal": "false",
            "ModalGroupID": "00000000-0000-0000-0000-000000000000",
            "IsCombatOnly": "false",
            "IsNonCombatOnly": "false",
            "HideFromUI": "false",
            "HideFromCombatLog": "false",
            "UniqueSet": "None",
            "NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63",
            "DurationOverride": 0,
            "OverrideEmpower": "Default",
            "ClearsOnMovement": "false",
            "CannotActivateWhileInStealth": "false",
            "CannotActivateWhileInvisible": "false",
            "ActivationPrerequisites": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                }
            },
            "ApplicationPrerequisites": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                }
            },
            "DeactivationPrerequisites": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                }
            },
            "PowerLevelScaling": {
                "ScalingType": "Default",
                "BaseLevel": 0,
                "LevelIncrement": 1,
                "MaxLevel": 0,
                "DamageAdjustment": 1,
                "DurationAdjustment": 1,
                "BounceCountAdjustment": 0,
                "ProjectileCountAdjustment": 0,
                "AccuracyAdjustment": 0,
                "PenetrationAdjustment": 0
            },
            "StatusEffectKeywordsIDs": [],
            "StatusEffectsIDs": ["03152d0d-a66f-4f7c-86b0-987d1df3046e"],
            "VisualEffects": [],
            "SelfMaterialReplacementID": "00000000-0000-0000-0000-000000000000",
            "AttackID": "00000000-0000-0000-0000-000000000000",
            "AITargetingConditional": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                },
                "Scripts": []
            },
            "AudioEventListID": "00000000-0000-0000-0000-000000000000"
        }, {
            "$type": "Game.GameData.ProgressionUnlockableComponent, Assembly-CSharp"
        }]
    }]
}

 

 

 

#3 Status Effect (Apply On Event) Table:
Rogue_Endless_SE_ApplyOnEvent.gamedatabundle

 

{
    "GameDataObjects": [{
        "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
        "DebugName": "Rogue_Endless_SE_ApplyOnEvent",
        "ID": "03152d0d-a66f-4f7c-86b0-987d1df3046e",
        "Components": [{
            "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
            "StatusEffectType": "ApplyStatusEffectOnEvent",
            "OverrideDescriptionString": 271858301,
            "UseStatusEffectValueAs": "None",
            "BaseValue": 0,
            "DynamicValue": {
                "Stat": "None",
                "SkillDataID": "00000000-0000-0000-0000-000000000000",
                "ClassID": "00000000-0000-0000-0000-000000000000",
                "MultiplyBy": 1,
                "Operator": "Add"
            },
            "KeywordsIDs": [],
            "DurationType": "Infinite",
            "Duration": 0,
            "MaxStackQuantity": 0,
            "ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
            "ApplicationType": "ApplyOnStart",
            "IntervalRateID": "00000000-0000-0000-0000-000000000000",
            "StackedChildrenApplyEffects": "false",
            "ApplicationPrerequisites": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                }
            },
            "TriggerAdjustment": {
                "TriggerOnEvent": "None",
                "TriggerOffEvent": "None",
                "ValidateWithAttackFilter": "false",
                "ParamValue": 0,
                "ValueAdjustment": 0,
                "DurationAdjustment": 0,
                "ResetTriggerOnEffectTimeout": "false",
                "MaxTriggerCount": 0,
                "IgnoreMaxTriggerCount": "false",
                "RemoveEffectAtMax": "false",
                "ChanceToTrigger": 1
            },
            "PowerLevelScaling": {
                "UseCharacterLevel": "false",
                "BaseLevel": 0,
                "LevelIncrement": 1,
                "MaxLevel": 0,
                "ValueAdjustment": 0,
                "DurationAdjustment": 0
            },
            "IsHostile": "false",
            "ClearOnCombatEnd": "false",
            "ClearOnRest": "false",
            "ClearOnFoodRest": "false",
            "ClearWhenAttacks": "false",
            "ClearOnDeath": "false",
            "HideFromCombatTooltip": "true",
            "HideFromCombatLog": "false",
            "HideFromUI": "false",
            "VisualEffects": [],
            "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
            "AttackFilter": {
                "KeywordsIDs": [],
                "KeywordLogic": "Or",
                "Range": "None",
                "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                "Source": "None",
                "DefendedBy": "None",
                "Empowered": "false",
                "Disengagement": "false",
                "Stealthed": "false",
                "UseStealthLinger": "false",
                "PowerLevel": 0,
                "PowerLevelOperator": "EqualTo",
                "ChanceToApply": 1,
                "AttackHostility": "Default"
            },
            "AttackTargetFilter": {
                "KeywordsIDs": [],
                "KeywordLogic": "Or",
                "Race": "None",
                "IsKith": "false",
                "HealthPercentage": 0,
                "HealthOperator": "EqualTo",
                "Distance": 0,
                "DistanceOperator": "EqualTo",
                "HasDOT": "false",
                "IsMarked": "false",
                "TargetHostility": "Default"
            },
            "ExtraValue": 1,
            "OverridePenetration": 0,
            "DamageTypeValue": "All",
            "KeywordValueID": "00000000-0000-0000-0000-000000000000",
            "RaceValue": "None",
            "StatusEffectTypeValue": "None",
            "ItemValueID": "00000000-0000-0000-0000-000000000000",
            "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
            "StatusEffectsValueIDs": ["1ca9c9d5-3478-4315-b588-0dd167de5f31"],
            "AttackValueID": "00000000-0000-0000-0000-000000000000",
            "AttackOverrideValue": "None",
            "EventValue": "OnScoringKill",
            "ClassValueID": "00000000-0000-0000-0000-000000000000",
            "WeaponTypeValue": "None",
            "AttackHitType": "None",
            "SkillValueID": "00000000-0000-0000-0000-000000000000",
            "AudioEventListID": "00000000-0000-0000-0000-000000000000",
            "BedRestDaysMinimum": 0,
            "BedRestDaysMaximum": 0
        }]
    }]
}

 


#4 Status Effect Table:
Rogue_Endless_SE_AddGuile.gamedatabundle

 

{
    "GameDataObjects": [{
        "$type": "Game.GameData.StatusEffectGameData, Assembly-CSharp",
        "DebugName": "Rogue_Endless_SE_AddGuile",
        "ID": "1ca9c9d5-3478-4315-b588-0dd167de5f31",
        "Components": [{
            "$type": "Game.GameData.StatusEffectComponent, Assembly-CSharp",
            "StatusEffectType": "AddResource",
            "OverrideDescriptionString": -1,
            "UseStatusEffectValueAs": "None",
            "BaseValue": 1,
            "DynamicValue": {
                "Stat": "None",
                "SkillDataID": "00000000-0000-0000-0000-000000000000",
                "ClassID": "00000000-0000-0000-0000-000000000000",
                "MultiplyBy": 1,
                "Operator": "Add"
            },
            "KeywordsIDs": [],
            "DurationType": "Instant",
            "Duration": 0,
            "MaxStackQuantity": 0,
            "ApplicationBehavior": "UseLongerDurationIfAlreadyApplied",
            "ApplicationType": "ApplyOnStart",
            "IntervalRateID": "00000000-0000-0000-0000-000000000000",
            "StackedChildrenApplyEffects": "false",
            "ApplicationPrerequisites": {
                "Conditional": {
                    "Operator": 0,
                    "Components": []
                }
            },
            "TriggerAdjustment": {
                "TriggerOnEvent": "None",
                "TriggerOffEvent": "None",
                "ValidateWithAttackFilter": "false",
                "ParamValue": 0,
                "ValueAdjustment": 0,
                "DurationAdjustment": 0,
                "ResetTriggerOnEffectTimeout": "false",
                "MaxTriggerCount": 0,
                "IgnoreMaxTriggerCount": "false",
                "RemoveEffectAtMax": "false",
                "ChanceToTrigger": 1
            },
            "PowerLevelScaling": {
                "UseCharacterLevel": "false",
                "BaseLevel": 0,
                "LevelIncrement": 1,
                "MaxLevel": 0,
                "ValueAdjustment": 0,
                "DurationAdjustment": 0
            },
            "IsHostile": "false",
            "ClearOnCombatEnd": "false",
            "ClearOnRest": "false",
            "ClearOnFoodRest": "false",
            "ClearWhenAttacks": "false",
            "ClearOnDeath": "false",
            "HideFromCombatTooltip": "true",
            "HideFromCombatLog": "false",
            "HideFromUI": "false",
            "VisualEffects": [],
            "MaterialReplacementID": "00000000-0000-0000-0000-000000000000",
            "AttackFilter": {
                "KeywordsIDs": [],
                "KeywordLogic": "Or",
                "Range": "None",
                "ClassTypeID": "00000000-0000-0000-0000-000000000000",
                "Source": "None",
                "DefendedBy": "None",
                "Empowered": "false",
                "Disengagement": "false",
                "Stealthed": "false",
                "UseStealthLinger": "false",
                "PowerLevel": 0,
                "PowerLevelOperator": "EqualTo",
                "ChanceToApply": 1,
                "AttackHostility": "Default"
            },
            "AttackTargetFilter": {
                "KeywordsIDs": [],
                "KeywordLogic": "Or",
                "Race": "None",
                "IsKith": "false",
                "HealthPercentage": 0,
                "HealthOperator": "EqualTo",
                "Distance": 0,
                "DistanceOperator": "EqualTo",
                "HasDOT": "false",
                "IsMarked": "false",
                "TargetHostility": "Default"
            },
            "ExtraValue": 0,
            "OverridePenetration": 0,
            "DamageTypeValue": "All",
            "KeywordValueID": "00000000-0000-0000-0000-000000000000",
            "RaceValue": "None",
            "StatusEffectTypeValue": "None",
            "ItemValueID": "00000000-0000-0000-0000-000000000000",
            "AfflictionTypeValueID": "00000000-0000-0000-0000-000000000000",
            "StatusEffectsValueIDs": [],
            "AttackValueID": "00000000-0000-0000-0000-000000000000",
            "AttackOverrideValue": "None",
            "EventValue": "OnApply",
            "ClassValueID": "8efd7667-8bc9-4020-b7f6-5a91b9d04e48",
            "WeaponTypeValue": "None",
            "AttackHitType": "None",
            "SkillValueID": "00000000-0000-0000-0000-000000000000",
            "AudioEventListID": "00000000-0000-0000-0000-000000000000",
            "BedRestDaysMinimum": 0,
            "BedRestDaysMaximum": 0
        }]
    }]
}

 

 

 

Anyone knows why this isn't working? Do I need to fulfill some kind of prerequisite (i.e. the mob has to die from a normal auto attack or similar) in order to get the +1 Guile?

 

I'm at my wits end so any help would be greatly appreciated.

 

Please note! All mod files can be found at my GitHub: https://github.com/Spherikal/PoE2-GameplayMods/tree/master/PoE2-RogueTweaks

Edited by Spherical

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted

Hmmm... thats really strange. I used your code and got an error message in the Progression screen even though i cant say why.

 

When rebuilding the whole thing from scratch (using the same tables like you) its working perfectly fine after testing it ingame. Whenever my Rogue killed an enemy he got back +1 guile.

 

But: Is your new talent showing up in the Progession Tree when leveling up or is just not working after killing enemies?

 

So if its not working i would rebuild it from zero. If its still not working after that we could deliver you the code! ;)

  • Like 1
Posted (edited)

Heya Spherikal. I'm on mobile, so I'm limited.

 

SE #4 should be applied as soon as the passive is trained. Is this the case?

Heya Armakoir :D I just realized that I accidentally swapped #3 with #4 - updated my original post to make it clearer what each .gamedatabundle file does.

 

The former #4 (now #3) should be applied whenever I kill an enemy since I'm using:

 

"StatusEffectType": "ApplyStatusEffectOnEvent"

 

And further down in the same file I have:

 

"EventValue": "OnScoringKill"

 

I thought that meant that if the requisite (OnScroingKill) is true then the game should apply the status effect (i.e. status effect ID 1ca9c9d5-3478-4315-b588-0dd167de5f31, which is the status effect that rewards the Guile point - see #4).

 

Am I implementing this all wrong?

Edited by Spherical

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted

Hmmm... thats really strange. I used your code and got an error message in the Progression screen even though i cant say why.

 

When rebuilding the whole thing from scratch (using the same tables like you) its working perfectly fine after testing it ingame. Whenever my Rogue killed an enemy he got back +1 guile.

 

But: Is your new talent showing up in the Progession Tree when leveling up or is just not working after killing enemies?

 

So if its not working i would rebuild it from zero. If its still not working after that we could deliver you the code! ;)

That is strange! Guess I'm going back to the drawing board to see if I can make it work by rebuilding it from scratch. But yes, the ability shows up fine in the progression table in-game...

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted (edited)

ApplyStatusEffect and ScoringOnKill are perfectly fine @spherical - i am using the same setting for one of my Shifter talents!

 

Just rebuild the whole thing maybe there is just one typo missing somewhere... happened to me more than one time... :biggrin:

Edited by Harpagornis
  • Like 1
Posted

ApplyStatusEffect and ScoringOnKill are perfectly right @spherical - i am using the same setting for one of my Shifter talents!

 

Just rebuild the whole thing maybe there is just one typo missing somewhere... happened to me more than one time... :D

Yeah, it's what I figure as well. Starting the rebuilding right now, let's hope it works better after I'm finished :)

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted (edited)

Oh and here are two screenshots showing the ability both in the progression table in-game as well as on the character sheet:

 

Screenshot #1

 

 

sQJ1H1P.jpg

 

 

Screenshot #2

 

 

NBn528D.jpg

 

 

Edited by Spherical
  • Like 1

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted (edited)

Welp, spent the entire day rebuilding all my gameplay mods. A lot of new variables was missing so I thought the Rogue mod might be malfunctioning due to that but it still doesn't work.

 

I give up. The game simply doesn't want my character to gain any Guile when killing enemies.

 

Here are the updated files if anyone is interested: https://github.com/Spherikal/PoE2-GameplayMods/tree/master/PoE2-RogueTweaks

 

UPDATE: I finally got it to work, apparently my main character has a faulty version of the ability activated. I need to respec in order for the mod to work properly.

Edited by Spherical

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted (edited)

Are you sure it isnt working? I tested the whole thing again and i must say: Its working perfectly here!

 

Just try it out with my file even though you will have to modify the DisplayName and Description numbers plus the AbilityID as i am using my own PT!

Edited by Harpagornis
Posted (edited)

SOLUTION:

Are you sure it isnt working? I tested the whole thing again and i must say: Its working perfectly here!

 

Just try it out with my file even though you will have to modify the DisplayName and Description numbers plus the AbilityID as i am using my own PT!

Managed to get it to work on a character that didn't have the ability already. Gonna try removing and then re-adding the skill using console commands to see if I can get it to work on my current character too

 

Edit: Works on my current character after removing and then re-adding it through console commands.

Edited by Spherical
  • Like 2

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Posted (edited)

I like this change a lot.  Is the actual guile increase inside 1 file or is it in multiple locations?

It's actually scattered across a few different files.

 

Here's a .7z-file with all my modifications to the Rogue class: https://mega.nz/#!yHYSAIDB!9ZQXjBBwy0YN37sfWZtns3UuGuLkk03iq-ffRoIFQg8

 

The stuff I've added are fairly self-explanatory but I'll list them here anyway:

  • At level 1 the Rogue will be able to pick a new passive ability called "The Endless Loop", which will rewards 1 Guile per kill.
  • Also at level 1 the Rogue will now have access to the Barbarian ability "Frenzy". When the Rogue reaches a higher level you'll be able to upgrade the ability to increase it's duration every time you kill an enemy (just like the Barbarian passive "Blood Storm").
  • The "Escape" ability can now be used out of combat.

That's all the mod does. I've also added some new descriptions to the abilities which can be found in the .stringtable-files located in the localized-folder.

 

Enjoy!

 

Oh and if you don't like my other additions to the class just remove them by going into the progression table file (Rogue_Mod.gamedatabundle) as well as removing the relevant .gamedatabundle-files associated with the abilities you want to remove.

Edited by Spherical

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...