public void AddAbility(MonsterAbility ability, MonsterAbility parent) { bool validToAdd = true; if (validToAdd) { //catch case wherein a modifier is selected if (parent.IsBaseAbility() && !ability.IsBaseAbility()) { ability.SetupParent(parent); if (ability.Prepare(this)) { if (slotsUsed + ability.SlotCost() > slots) { ability.Complain(1); } else { parent.AddModifier((AbilityModifier)ability); } } } else { AddAbility(ability); } } }