public static void RemoveAbility(this UnitEntityData ch, BlueprintAbility ability) { if (ability.IsSpell) { if (PartyEditor.IsOnPartyEditor() && PartyEditor.SelectedSpellbook.TryGetValue(ch.HashKey(), out var selectedSpellbook)) { if (UIUtilityUnit.SpellbookHasSpell(selectedSpellbook, ability)) { selectedSpellbook.RemoveSpell(ability); return; } } foreach (var spellbook in ch.Spellbooks) { if (UIUtilityUnit.SpellbookHasSpell(spellbook, ability)) { spellbook.RemoveSpell(ability); } } } var abilities = ch.Descriptor.Abilities; if (abilities.HasFact(ability)) { abilities.RemoveFact(ability); } }
public static bool HasAbility(this UnitEntityData ch, BlueprintAbility ability) { if (ability.IsSpell) { if (PartyEditor.IsOnPartyEditor() && PartyEditor.SelectedSpellbook.TryGetValue(ch.HashKey(), out var selectedSpellbook)) { return(UIUtilityUnit.SpellbookHasSpell(selectedSpellbook, ability)); } } return(ch.Spellbooks.Any(spellbook => spellbook.IsKnown(ability)) || ch.Descriptor.Abilities.HasFact(ability)); }
public static void RemoveAbility(this UnitEntityData ch, BlueprintAbility ability) { if (ability.IsSpell) { foreach (var spellbook in ch.Spellbooks) { if (UIUtilityUnit.SpellbookHasSpell(spellbook, ability)) { spellbook.RemoveSpell(ability); } } } var abilities = ch.Descriptor.Abilities; if (abilities.HasFact(ability)) { abilities.RemoveFact(ability); } }