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.