void UGSAbilitiesComponent::GiveAbilityAndInsert(TSubclassOf<class UGSAbility> AbilityIn) { if (GetOwnerRole() < ROLE_Authority) { ServerGiveAbilityAndInsert(AbilityIn); } else { int32 abIndex = AddAbilityToActiveList(AbilityIn); if (abIndex != -1) { for (FGSAbilitiesSets& set : AbilitySets) { for (FGSAbilitySlot& slot : set.AbilitySlots) { if (slot.AbilityIndex == -1) { set.RepMe++; slot.AbilityIndex = abIndex; if (GetNetMode() == ENetMode::NM_Standalone) OnAbilityAddedToSet.ExecuteIfBound(); return; } } } } } }
void UGSAbilitiesComponent::AddAbilityToSlotFromBook(int32 TargetSetIndex, int32 TargetSlotIndex, int32 BookTabIndex, int32 BookSlotIndex) { if (GetOwnerRole() < ENetRole::ROLE_Authority) { ServerAddAbilityToSlotFromBook(TargetSetIndex, TargetSlotIndex, BookTabIndex, BookSlotIndex); } else { TSubclassOf<UGSAbility> abilityClass = OwnedAbilities.AbilitiesTab[BookTabIndex].Abilities[BookSlotIndex].AbilityClass; int32 abIndex = AddAbilityToActiveList(abilityClass); AbilitySets[TargetSetIndex].AbilitySlots[TargetSetIndex].AbilityIndex = abIndex; AbilitySets[TargetSetIndex].RepMe++; if (GetNetMode() == ENetMode::NM_Standalone) OnRep_AbilitySets(); } }
void UGASAbilitiesComponent::BP_AddAbility(TSubclassOf<class UGASAbility> AbilityClass) { AddAbilityToActiveList(AbilityClass); }