protected override void OnUnregister()
        {
            ReputationUpdater.Instance.Unregister(this);

            // Check for a deactivation
            if (!Parent.IsActive && reputationGiven > 0.01)
            {
                float clawbackAmount = 0.0f;

                // Check for an upgrade/downgrade
                IEnumerable <ReputationTicker> activeEffects = StrategySystem.Instance.Strategies.Where(s => s.IsActive && s != Parent).SelectMany(s => s.Effects).OfType <ReputationTicker>();
                if (activeEffects.Any())
                {
                    // Found another active effect, should only be one
                    ReputationTicker otherEffect = activeEffects.First();

                    // Set the current reputation given
                    otherEffect.reputationGiven = Math.Min(reputationGiven, otherEffect.reputationLimit);

                    if (reputationGiven > otherEffect.reputationLimit)
                    {
                        clawbackAmount = otherEffect.reputationLimit - reputationGiven;
                    }
                }
                else
                {
                    clawbackAmount = -reputationGiven;
                }

                // Clawback of reputation
                if (clawbackAmount != 0.0f)
                {
                    Reputation.Instance.addReputation_discrete(clawbackAmount, TransactionReasons.Strategies);
                    CurrencyPopup.Instance.AddPopup(Currency.Reputation, clawbackAmount, TransactionReasons.Strategies, Parent.Config.Title + " cancellation", false);
                }
            }
        }
 public void Unregister(ReputationTicker effect)
 {
     effects.Remove(effect);
 }
 public void Register(ReputationTicker effect)
 {
     effects.AddUnique(effect);
 }