protected override void InitializeInternal()
    {
        base.InitializeInternal();

        long triggerDate = ClanCoreMigrationEvent.CalculateTriggerDate(this);

        if (triggerDate > 0)
        {
            if (triggerDate <= World.CurrentDate)
            {
                throw new System.Exception(
                          "ClanCoreMigrationEvent Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + World.CurrentDate);
            }

            AddEvent(new ClanCoreMigrationEvent(this, triggerDate));
        }

        triggerDate = ClanSplitDecisionEvent.CalculateTriggerDate(this);
        if (triggerDate > 0)
        {
            if (triggerDate <= World.CurrentDate)
            {
                throw new System.Exception(
                          "ClanSplitDecisionEvent Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + World.CurrentDate);
            }

            AddEvent(new ClanSplitDecisionEvent(this, triggerDate));
        }

        triggerDate = ClanDemandsInfluenceDecisionEvent.CalculateTriggerDate(this);
        if (triggerDate > 0)
        {
            if (triggerDate <= World.CurrentDate)
            {
                throw new System.Exception(
                          "ClanDemandsInfluenceDecisionEvent Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + World.CurrentDate);
            }

            AddEvent(new ClanDemandsInfluenceDecisionEvent(this, triggerDate));
        }

        triggerDate = TribeSplitDecisionEvent.CalculateTriggerDate(this);
        if (triggerDate > 0)
        {
            if (triggerDate <= World.CurrentDate)
            {
                throw new System.Exception(
                          "TribeSplitDecisionEvent Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + World.CurrentDate);
            }

            AddEvent(new TribeSplitDecisionEvent(this, triggerDate));
        }
    }
    protected override void UpdateInternal()
    {
        if (NewCoreGroup != null)
        {
            if (IsGroupValidCore(NewCoreGroup))
            {
                MigrateToNewCoreGroup();
            }

            NewCoreGroup = null;

            ResetEvent(WorldEvent.ClanCoreMigrationEventId, ClanCoreMigrationEvent.CalculateTriggerDate(this));
        }
    }