Skip to content

Ability System (GAS) Overview

Overview

ModularInventoryPlus uses Unreal's Gameplay Ability System (GAS) for attributes, gameplay effects, and abilities. This doc covers the MIP-specific ASCs, attribute sets, base abilities, and execution calculations. Equipment stats application is documented in UMIPEquipmentGE.

Key traits:

  • UMIPAbilitySystemComponent – Base ASC; startup abilities, give/remove/level delegates, immunity, death handling, ability-by-tag helpers.
  • UMIPPlayerAbilitySystemComponent – Player ASC (extends MIP ASC); used on player pawn/state.
  • Attribute sets – MIPBaseAttributeSet (with FEffectProperties), WithPrimary/WithDerived, BaseMobAttributeSet for mobs.
  • Abilities – MIPBaseGameplayAbility → MIPBasePlayerGameplayAbility (level, requirement, description), MIPBaseMobGameplayAbility, active/passive/data-driven variants.
  • Exec calcs – Base damage, player-to-mob, mob damage, ApplyEquipmentStats (see UMIPEquipmentGE).

All paths below are relative to Plugins/ModularInventoryPlus/Source/ModularInventoryPlus/.


Key Classes & Files

Class File
UMIPAbilitySystemComponent Public/AbilitySystem/MIPAbilitySystemComponent.h
UMIPPlayerAbilitySystemComponent Public/AbilitySystem/MIPPlayerAbilitySystemComponent.h
UMIPPlayerAbilitySystemComponentManager Public/AbilitySystem/MIPPlayerAbilitySystemComponentManager.h
MIPBaseAttributeSet Public/AbilitySystem/Attributes/MIPBaseAttributeSet.h
MIPWithPrimaryAttributeSet Public/AbilitySystem/Attributes/MIPWithPrimaryAttributeSet.h
MIPWithDerivedAttributeSet Public/AbilitySystem/Attributes/MIPWithDerivedAttributeSet.h
MIPBaseMobAttributeSet Public/AbilitySystem/Attributes/MIPBaseMobAttributeSet.h
MIPBaseGameplayAbility Public/AbilitySystem/Abilities/MIPBaseGameplayAbility.h
MIPBasePlayerGameplayAbility Public/AbilitySystem/Abilities/MIPBasePlayerGameplayAbility.h
MIPBaseMobGameplayAbility Public/AbilitySystem/Abilities/Mobs/MIPBaseMobGameplayAbility.h
MIPBaseActiveGameplayAbility Public/AbilitySystem/Abilities/Actives/MIPBaseActiveGameplayAbility.h
MIPBasePassiveGameplayAbility Public/AbilitySystem/Abilities/Passives/MIPBasePassiveGameplayAbility.h
MIPBaseDataDrivenAbility Public/AbilitySystem/Abilities/Actives/MIPBaseDataDrivenAbility.h
ExecCal_* Public/AbilitySystem/ExecCal/*.h

UMIPAbilitySystemComponent

  • Base: UAbilitySystemComponent (Engine).
  • Delegates: OnStartupAbilitiesGivenDelegate, OnAllAbilitiesGivenDelegate, OnAbilityGivenDelegate, OnAbilityRemovedDelegate, OnAbilityLevelUpDelegate; AbilityReadyForNextActionQueueCallbacks.
  • API: AddImmunity(), RemoveImmunity(), OnDeath(); BroadcastReadyForNextActionQueue(). GetAbilityByAbilityTag(), GetAbilityLevelByAbilityTag(), GetAbilityCombinedInfoByAbilityTag(), CheckStartupAbilitiesGiven(). CancelAllNotSurviveDeathAbilities(), RemoveAllNotSurviveDeathGameplayEffects(); BindAnyMovement/UnbindAnyMovement; OnCharacterMovementUpdated.
  • Usage: Player and mob use ASC for attributes and abilities; PC resolves ASC via IAbilitySystemInterface from pawn/state.

UMIPPlayerAbilitySystemComponent

  • Base: UMIPAbilitySystemComponent. Player-specific ASC (e.g. on pawn or state); used for player abilities and attribute set.

UMIPPlayerAbilitySystemComponentManager

  • Base: UMIPBasePawnComponent; IAbilitySystemInterface. Pawn component that holds or resolves the player ASC so the pawn can implement GetAbilitySystemComponent().

Attribute sets

  • MIPBaseAttributeSet – Base for all MIP attribute sets; defines FEffectProperties (EffectContextHandle, EffectSpecPtr, Magnitude, Source/Target ASC, Avatar, Controller, Character). Macros ATTRIBUTE_ACCESSORS for getter/setter/initter.
  • MIPWithPrimaryAttributeSet – Primary attributes (e.g. strength, stamina).
  • MIPWithDerivedAttributeSet – Derived attributes (e.g. max health, max resource from primary).
  • MIPBaseMobAttributeSet – Mob-specific attributes. Health component and damage exec calcs read from the appropriate set.

Gameplay abilities

  • MIPBaseGameplayAbility – Base for all MIP abilities; extends UGameplayAbility.
  • MIPBasePlayerGameplayAbility – Level, requirement, and description: OnGiveAbility; GetAbilityStaticFriendlyInfoDataAsset(), GetAbilityLevelUpInfoDataAsset(), GetMaxAbilityLevel(), GetRequiredPlayerLevelAt(), GetRequiredAbilityPointsAt(), GetAbilityLevelUpAbilityRequirement(), GetReadableAbilityDescAtLevel(). Used by ability-points level component for learn/level-up.
  • MIPBaseMobGameplayAbility – Base for mob abilities.
  • MIPBaseActiveGameplayAbility – Active (activated) abilities.
  • MIPBasePassiveGameplayAbility – Passive abilities.
  • MIPBaseDataDrivenAbility – Data-driven from MIPDataDrivenAbilityDataAsset; uses data-driven objects (montage, wait confirm, wait event, etc.).
  • MIPBaseItemPassiveGameplayAbility – Item-granted passive.

Execution calculations

  • ExecCal_BaseDamage – Base damage exec calc.
  • ExecCal_PlayerToMobDamage – Player → mob damage.
  • ExecCal_MobDamage – Mob damage.
  • ExecCal_ApplyEquipmentStats – Used when applying equipment GE; see UMIPEquipmentGE.

Damage flow: gameplay effect uses these exec calcs; attribute set receives magnitude; health component listens to attribute change and handles death (player or mob).


Integration

  • Health: Health components read from ASC and attribute set; death/respawn use GetTargetStartDeathDelegate/GetTargetRespawnDelegate from combat interface.
  • Equipment: UMIPEquipmentGE and Equipment components apply/remove GEs; ApplyEquipmentStats exec calc.
  • Ability points: UMIPAbilityPointsLevelComponent uses GetAbilityLevelUpInfoDataAsset and level/point requirements from MIPBasePlayerGameplayAbility.
  • Floating damage: IMIPPlayerDamageReceivableActorInterface and damage info flow for floating text.