diff --git a/Source/GMCAbilitySystem/Private/Ability/GMCAbility.cpp b/Source/GMCAbilitySystem/Private/Ability/GMCAbility.cpp index 0abfa7c0..f585313a 100644 --- a/Source/GMCAbilitySystem/Private/Ability/GMCAbility.cpp +++ b/Source/GMCAbilitySystem/Private/Ability/GMCAbility.cpp @@ -399,3 +399,14 @@ void UGMCAbility::ModifyBlockOtherAbilitiesViaDefinitionQuery(const FGameplayTag BlockOtherAbilitiesQuery = NewQuery; UE_LOG(LogGMCAbilitySystem, Verbose, TEXT("BlockOtherAbilityByDefinitionQuery modified: %s"), *NewQuery.GetDescription()); } + +void UGMCAbility::ModifyAbilityDefinition(FGameplayTagContainer TagToAdd, FGameplayTagContainer TagToRemove) +{ + for (auto Tag : TagToAdd) { + AbilityDefinition.AddTag(Tag); + } + + for (auto Tag : TagToRemove) { + AbilityDefinition.RemoveTag(Tag); + } +} diff --git a/Source/GMCAbilitySystem/Private/Effects/GMCAbilityEffect.cpp b/Source/GMCAbilitySystem/Private/Effects/GMCAbilityEffect.cpp index d9165783..59acf681 100644 --- a/Source/GMCAbilitySystem/Private/Effects/GMCAbilityEffect.cpp +++ b/Source/GMCAbilitySystem/Private/Effects/GMCAbilityEffect.cpp @@ -407,3 +407,14 @@ void UGMCAbilityEffect::ModifyEndAbilitiesOnEndQuery(const FGameplayTagQuery& Ne EffectData.EndAbilityOnEndQuery = NewQuery; UE_LOG(LogGMCAbilitySystem, Verbose, TEXT("EndAbilityOnEndViaDefinitionQuery modified: %s"), *NewQuery.GetDescription()); } + +void UGMCAbilityEffect::ModifyEffectDefinition(FGameplayTagContainer TagToAdd, FGameplayTagContainer TagToRemove) +{ + for (auto Tag : TagToAdd) { + EffectData.EffectDefinition.AddTag(Tag); + } + + for (auto Tag : TagToRemove) { + EffectData.EffectDefinition.RemoveTag(Tag); + } +} diff --git a/Source/GMCAbilitySystem/Public/Ability/GMCAbility.h b/Source/GMCAbilitySystem/Public/Ability/GMCAbility.h index a0b1cb03..784d5ead 100644 --- a/Source/GMCAbilitySystem/Public/Ability/GMCAbility.h +++ b/Source/GMCAbilitySystem/Public/Ability/GMCAbility.h @@ -281,5 +281,8 @@ class GMCABILITYSYSTEM_API UGMCAbility : public UObject, public IGameplayTaskOwn UFUNCTION(BlueprintCallable, Category = "GMAS|Abilities|Queries") void ModifyBlockOtherAbilitiesViaDefinitionQuery(const FGameplayTagQuery& NewQuery); + UFUNCTION(BlueprintCallable, Category = "GMAS|Abilities") + void ModifyAbilityDefinition(FGameplayTagContainer TagToAdd, FGameplayTagContainer TagToRemove); + }; diff --git a/Source/GMCAbilitySystem/Public/Effects/GMCAbilityEffect.h b/Source/GMCAbilitySystem/Public/Effects/GMCAbilityEffect.h index 374e338b..48c68fff 100644 --- a/Source/GMCAbilitySystem/Public/Effects/GMCAbilityEffect.h +++ b/Source/GMCAbilitySystem/Public/Effects/GMCAbilityEffect.h @@ -312,5 +312,9 @@ class GMCABILITYSYSTEM_API UGMCAbilityEffect : public UObject UFUNCTION(BlueprintCallable, Category = "GMCAbilitySystem|Effects|Queries") void ModifyEndAbilitiesOnEndQuery(const FGameplayTagQuery& NewQuery); + + UFUNCTION(BlueprintCallable, Category = "GMAS|Effects") + void ModifyEffectDefinition(FGameplayTagContainer TagToAdd, FGameplayTagContainer TagToRemove); + };