//Function called when combat starts
 private void OnCombatStartHandler(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (isImport)
     {
         return;
     }
 }
        void OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            encounterInfo.encounter.Title = LogParse.encounter;

            if (LogParse.Allies != null && LogParse.Allies.Count > 0)
            {
                List <CombatantData> localAllies = new List <CombatantData>(LogParse.Allies.Count);
                foreach (var name in LogParse.Allies)
                {
                    var combatant = encounterInfo.encounter.GetCombatant(name);
                    if (combatant != null)
                    {
                        localAllies.Add(encounterInfo.encounter.GetCombatant(name));
                    }
                }
                encounterInfo.encounter.SetAllies(localAllies);
            }

            foreach (var data in encounterInfo.encounter.Items.Values)
            {
                if (LogParse.NameClass.ContainsKey(data.Name))
                {
                    data.Tags["Class"] = LogParse.NameClass[data.Name];
                }
                else
                {
                    data.Tags["Class"] = "";
                }
            }
        }
Exemple #3
0
 private void CombatStarted(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (PluginUtil.IsPluginEnabled())
     {
         PluginControl.LogInfo("Encounter detected! Will send the parse after it finishes...");
     }
 }
        private void FormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            StringBuilder sb = new StringBuilder();

            foreach (DateTime start in encounterInfo.encounter.StartTimes)
            {
                sb.Append(start.ToLongTimeString() + ", ");
            }
            sb.Length = sb.Length - 2;
            Log("\t\tStarts: " + sb);
            sb.Clear();
            foreach (DateTime end in encounterInfo.encounter.EndTimes)
            {
                sb.Append(end.ToLongTimeString() + ", ");
            }
            sb.Length = sb.Length - 2;
            Log("\t\tEnds:   " + sb);

            double oldDuration;

            if (encounterInfo.encounter.EndTime == DateTime.MinValue || encounterInfo.encounter.StartTime == DateTime.MaxValue)
            {
                oldDuration = 0;
            }
            else
            {
                oldDuration = (encounterInfo.encounter.EndTime - encounterInfo.encounter.StartTime).TotalSeconds;
            }
            Log(String.Format("Combat ended.   {1} \tTrim: {2:0} -> {3:0}s ({0})",
                              encounterInfo.encounter.Title, encounterInfo.encounter.EndTime.ToLongTimeString(), oldDuration, encounterInfo.encounter.Duration.TotalSeconds));
        }
Exemple #5
0
 void oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (!isImport)
     {
         encounterInfo.encounter.CharName = charName;
     }
 }
        private void SpeedKillTrackerOnCombatStartEventHandler(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            try
            {
                speedRunTrackerTable.Reset();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            currentFightData = encounterInfo.encounter;

            try
            {
                LoadFightCheckpoints();
                fightDataFactory = new FightDataFactory(ActGlobals.oFormActMain.CurrentZone, checkPointDataTable.PhaseCount);

                raidZoneTitleTextBox.Text = RAID_ZONE_TITLE_PREFIX + ActGlobals.oFormActMain.CurrentZone;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Exemple #7
0
        private void CombatEnded(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            if (PluginUtil.IsPluginEnabled())
            {
                try
                {
                    Log Log = PluginUtil.ACTEncounterToModel(encounterInfo.encounter);
                    if (Log != null)
                    {
                        string Json = PluginUtil.ToJson(Log);
                        bool   Sent = Service.PostDiscord(Json, PluginSettings.GetSetting <string>("Token"));

                        if (Sent)
                        {
                            PluginControl.LogInfo("Parse sent to your Discord channel.");
                            PluginControl.LogInfo("Waiting the next encounter...");
                        }
                        else
                        {
                            PluginControl.LogInfo("Could not send the parse to your Discord channel. Check your token.");
                        }
                    }
                    else
                    {
                        PluginControl.LogInfo("Nothing to be sent. Waiting the next encounter...");
                    }
                }
                catch (Exception ex)
                {
                    PluginControl.LogInfo("Something went wrong. " + ex.Message);
                }
            }
        }
Exemple #8
0
 //Function called when combat starts
 //May be less reliable without hojoring installed
 private void OnCombatStartHandler(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     midgard_prev_state   = 0;
     had_second_fireball  = false;
     fireball_count       = 0;
     second_fireball_name = "";
 }
Exemple #9
0
        void SpeedKillTrackerOnCombatEndEventHandler(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            currentFightData = null;
            currentPhase     = 0;

            runTimeTrackerTable.Reset();
        }
Exemple #10
0
 void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs actionInfo)
 {
     // makeshift way to ensure UDP transmission makes it to server
     for (int i = 0; i < 3; i++)
     {
         sendEncounterData(actionInfo.encounter);
     }
 }
 /// <summary> 戦闘終了時に実行される処理を定義します。
 /// </summary>
 /// <param name="isImport"></param>
 /// <param name="encounterInfo"></param>
 public void ActEvent_CombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (!isImport && this.CommonDataModel.PluginSettingsData.ResetTimelineCombatEndEnabled)
     {
         this.TimelineControlModule.TimerStop(this.CommonDataModel, this.TimelineObjectModel);
         this.TimelineControlModule.CurrentCombatRelativeClock.StopClock(0);
     }
 }
 void encounter_oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (this.txt_simFile.Text == "")
     {
         log("ACT combat end: " + encounterInfo.encounter);
         stopFight();
     }
 }
Exemple #13
0
 void CombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (!isImport && Globals.ResetTimelineCombatEnd)
     {
         Controller.Paused      = true;
         Controller.CurrentTime = 0;
     }
 }
Exemple #14
0
 void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     currInstID = 0xFFFF;
     if (!isImport)
     {
         encounterInfo.encounter.CharName = charName;
     }
 }
Exemple #15
0
 void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (encounterInfo.encounter.Title != "Encounter")
     {
         encounterInfo.encounter.Title = String.Format("{0:0.00} - {1}",
                                                       encounterInfo.encounter.DPS, encounterInfo.encounter.Title);
     }
 }
Exemple #16
0
        // Combat End
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            if (isImport)
            {
                return;
            }

            double dCurrDPS = myGetDPS();

            if (dCurrDPS > 0 && cbSpeakEndEncounter.Checked)
            {
                string sDPS        = dCurrDPS.ToString("0.0") + " K";
                string sDuration   = "";
                string sTitle      = "";
                string sDeaths     = "";
                string sPluralMins = "s";
                string sPluralSecs = "s";

                if (cbSpeakEncounterName.Checked)
                {
                    sTitle = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Title;
                }

                if (cbSpeakEncounterDuration.Checked)
                {
                    DateTime startTime = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.StartTime;
                    DateTime endTime   = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.ShortEndTime;
                    TimeSpan duration  = endTime.Subtract(startTime);

                    if (duration.Minutes == 1)
                    {
                        sPluralMins = "";
                    }

                    if (duration.Seconds == 1)
                    {
                        sPluralSecs = "";
                    }

                    if (duration.Minutes > 0)
                    {
                        sDuration = " took " + duration.Minutes + " minute" + sPluralMins + " " + duration.Seconds + " second" + sPluralSecs + " at ";
                    }
                    else
                    {
                        sDuration = " took " + duration.Seconds + " second" + sPluralSecs + " at ";
                    }
                }

                if (cbSpeakNumDeaths.Checked)
                {
                    sDeaths = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.AlliedDeaths.ToString("0") + " deaths. ";
                }

                ActGlobals.oFormActMain.TTS(sTitle + sDuration + sDPS + sDeaths);
            }
        }
 void encounter_oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (workerRunning)
     {
         if (this.txt_simFile.Text == "")
         {
             startNewFight();
         }
     }
 }
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            currentFightData = null;
            currentPhase     = 0;

            for (int i = 0; i < checkpointCount; i++)
            {
                checkpointTable.Rows[i].Cells[1].Value = "";
                checkpointTable.Rows[i].Cells[3].Value = "";
            }
        }
Exemple #19
0
 private void CombatEnded(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (SkillView.IsRecording())
     {
         SkillView.SetRecord(false);
     }
     else if (SkillView.IsPlaying())
     {
         SkillView.SetPlay(false);
     }
 }
Exemple #20
0
        void SpeedKillTrackerOnCombatStartEventHandler(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            currentFightData = encounterInfo.encounter;

            try
            {
                LoadFightCheckpoints();
            }
            catch (Exception e)
            {
                runTimeTrackerTable.Rows[2].Cells[2].Value = e.Message;
            }
        }
        void oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs actionInfo)
        {
            inCombat       = true;
            ActiveEnconter = actionInfo.encounter;

            if (dataStruct == null)
            {
                return;
            }
            dataStruct.IsConnected = true;

            Debug.WriteLine(@"Start");
        }
Exemple #22
0
 void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (isImport)
     {
         return;
     }
     if (encounterInfo.encounter.Parent.PopulateAll)
     {
         string export = ActGlobals.oFormActMain.GetTextExport(encounterInfo.zoneDataIndex, 0, -1);
         tabLabel.Text = export;
         ActGlobals.oFormActMain.SendToClipboard(export, false);
     }
 }
Exemple #23
0
        private void OFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            UIMain.CombatToggle.BackColor = UIMain.DisableColorPicker.BackColor;
            UIMain.CombatToggle.Text      = "In Combat";
            UIMain.IsInCombat             = true;

            if (UIMain.ParseON)
            {
                UIMain.PluginTabControl.SelectTab(1);
            }

            EncounterTreeMaker(true, encounterInfo);
        }
Exemple #24
0
        private void OFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            UIMain.CombatToggle.BackColor = UIMain.EnableColorPicker.BackColor;
            UIMain.CombatToggle.Text      = "Out Of Combat";
            UIMain.IsInCombat             = false;

            // grab the out of combat tab IF CB_OOCLog == True - maybe
            if (UIMain.ParseON)
            {
                UIMain.PluginTabControl.SelectTab(0);
            }

            EncounterTreeMaker(false, encounterInfo);
        }
Exemple #25
0
 private void CombatStarted(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (!SkillView.IsRecording() && !SkillView.IsPlaying() && SkillView.Visible)
     {
         if (SkillView.GetSkillCount() > 0)
         {
             SkillView.SetPlay(true);
         }
         else
         {
             SkillView.SetRecord(true);
         }
     }
 }
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs actionInfo)
        {
            inCombat       = false;
            ActiveEnconter = null;

            if (dataStruct == null)
            {
                return;
            }
            dataStruct.IsConnected = false;

            WriteJSON(dataStruct);

            Debug.WriteLine(@"End");
        }
Exemple #27
0
 void OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     encounterInfo.encounter.Title = LogParse.encounter;
     foreach (var data in encounterInfo.encounter.Items.Values)
     {
         if (LogParse.NameClass.ContainsKey(data.Name))
         {
             data.Tags["Class"] = LogParse.NameClass[data.Name];
         }
         else
         {
             data.Tags["Class"] = "";
         }
     }
 }
Exemple #28
0
        private void CombatEnded(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            if (PluginUtil.IsPluginEnabled())
            {
                try
                {
                    //PluginControl.LogInfo(PluginSettings.GetSetting<string>("MaxPlayers"));
                    //Log Log = PluginUtil.ACTEncounterToModel(encounterInfo.encounter);
                    List <Log> LogList = PluginUtil.ACTEncounterToModelList(encounterInfo.encounter);
                    LogList.ForEach(Log =>
                    {
                        //PluginControl.LogInfo(PluginSettings.GetSetting<string>("MaxPlayers"));
                        if (Log != null)
                        {
                            if (PluginSettings.GetSetting <bool>("TimeEnabled") == true && PluginUtil.TimeBetween(DateTime.Now, DateTime.Parse(PluginSettings.GetSetting <string>("StartTime")).TimeOfDay, DateTime.Parse(PluginSettings.GetSetting <string>("EndTime")).TimeOfDay) == false)
                            {
                                PluginControl.LogInfo("Parse *not* sent to your Discord channel due to time lock rules.");
                                PluginControl.LogInfo("Waiting for the next encounter...");
                                return;
                            }

                            string Json = PluginUtil.ToJson(Log);
                            bool Sent   = Service.PostDiscord(Json, PluginSettings.GetSetting <string>("Token"));
                            if (Sent)
                            {
                                PluginControl.LogInfo("Parse sent to your Discord channel.");
                                PluginControl.LogInfo("Waiting for the next encounter...");
                            }
                            else
                            {
                                PluginControl.LogInfo("Could not send the parse to your Discord channel. Check your token and permissions.");
                            }

                            //PluginControl.LogInfo(Json);
                        }
                        else
                        {
                            PluginControl.LogInfo("Nothing to be sent. Waiting for the next encounter...");
                        }
                    });
                }
                catch (Exception e)
                {
                    PluginControl.LogInfo("Something went wrong. Debug info:" + Environment.NewLine + e.ToString());
                }
            }
        }
        private void SpeedKillTrackerOnCombatEndEventHandler(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            try
            {
                if (IsCleared())
                {
                    TrackerTime currentRunWorldRecordRunClearTimeDifference = DifferenceCalculator.CalculateCurrentRunWorldRecordRunClearTimeDifference(fightData, checkPointDataTable);
                    speedRunTrackerTable.UpdateCurrentRunWorldRecordDifference(currentPhase, currentRunWorldRecordRunClearTimeDifference);
                }
            }
            catch (Exception e)
            {
                System.Console.WriteLine("check");
            }

            currentFightData = null;
            currentPhase     = 0;

            fightDataFactory = null;
            fightData        = null;
        }
        private void OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            lastActivatedSkill = string.Empty;
            lastActivatedSkillGlobalTime = -1;
            lastActivedSkillTime = DateTime.MinValue;

            lastPotion = string.Empty;

            ContinuousDamageSet.Clear();
            BlockedHistory.Clear();
            HealerRecordSet.Clear();
        }
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            lock (locker)
            {
                lastCombatEnd = encounterInfo.encounter.EndTime;

                if (allies != null && allies.Count > 0)
                {
                    List<CombatantData> localAllies = new List<CombatantData>(allies.Count);
                    foreach (var name in allies)
                    {
                        var combatant = encounterInfo.encounter.GetCombatant(name);
                        if (combatant != null)
                        {
                            localAllies.Add(encounterInfo.encounter.GetCombatant(name));
                        }
                    }

                    encounterInfo.encounter.SetAllies(localAllies);
                }

                string charName = ConvertCharName(SecretLanguage.You);
                if (encounterInfo.encounter.GetCombatant(charName) != null)
                {
                    string bossName = encounterInfo.encounter.GetStrongestEnemy(null);
                    if (bossName.IndexOf("_self_") > 0) return; // Prevent _self_-encounters due to dot after fights
                    encounterInfo.encounter.Title = bossName;
                }
                else
                {
                    return;
                }

                Dictionary<string, BuffData> buffDataCopy = new Dictionary<string, BuffData>();
                foreach (var buff in buffData)
                {
                    if (buff.Value.Changed)
                    {
                        BuffData copy = buff.Value.Copy();
                        copy.Stop(encounterInfo.encounter.EndTime);
                        if (copy.TotalTime > encounterInfo.encounter.Duration.TotalMilliseconds)
                        {
                            copy = new BuffData();
                            copy.Start(encounterInfo.encounter.StartTime);
                            copy.Stop(encounterInfo.encounter.EndTime);
                        }

                        buffDataCopy.Add(buff.Key, copy);
                    }
                }

                encounterInfo.encounter.Tags[BUFFS] = buffDataCopy;
            }

            if (checkBox_DontExportShortEnc.Checked && encounterInfo.encounter.Duration.TotalSeconds < 5)
            {
                return;
            }

            CultureInfo usCulture = new CultureInfo("en-US");
            Dictionary<string, Dictionary<string, string>> lines = new Dictionary<string, Dictionary<string, string>>();
            Dictionary<string, Dictionary<string, Dictionary<string, string>>> embedLines = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>();
            SortedDictionary<string, string> displayOrder = new SortedDictionary<string, string>();
            SortedDictionary<string, string> displayOrderHealers = new SortedDictionary<string, string>();
            SortedDictionary<string, string> displayOrderTanks = new SortedDictionary<string, string>();
            SortedDictionary<string, SortedDictionary<string, string>> embedDisplayOrder = new SortedDictionary<string, SortedDictionary<string, string>>();
            if (checkBox_ExportHtml.Checked || checkBox_ExportScript.Checked)
            {
                BuildScriptOutput(encounterInfo.encounter, usCulture, lines, embedLines, displayOrder, embedDisplayOrder, displayOrderHealers, displayOrderTanks);

                if (checkBox_ExportHtml.Checked)
                {
                    GenerateHtmlScript(encounterInfo.encounter, usCulture, lines, embedLines, displayOrder, embedDisplayOrder);
                }

                if (checkBox_ExportScript.Checked)
                {
                    GenerateChatScript(encounterInfo.encounter, usCulture, lines, displayOrder, displayOrderHealers, displayOrderTanks, isImport);
                }
            }
        }
Exemple #32
0
        /// <summary>
        /// Event Handler for end of combat encounter
        /// </summary>
        /// <param name="isImport"></param>
        /// <param name="encounterInfo"></param>
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            lock (locker)
            {
                lastCombatEnd = encounterInfo.encounter.EndTime;

                if (encounterInfo.encounter.GetAllies().Count == 0)
                {
                    if (AllyList != null && AllyList.Count > 0)
                    {
                        List<CombatantData> localAllies = new List<CombatantData>(AllyList.Count);
                        foreach (var name in AllyList)
                        {
                            var combatant = encounterInfo.encounter.GetCombatant(name);
                            if (combatant != null)
                            {
                                localAllies.Add(encounterInfo.encounter.GetCombatant(name));
                            }
                        }

                        encounterInfo.encounter.SetAllies(localAllies);
                    }
                }

                string bossName = encounterInfo.encounter.GetStrongestEnemy(null);
                encounterInfo.encounter.Title = bossName;
            }

            if (encounterInfo.encounter.Duration.TotalSeconds < 5)
            {
                return;
            }

            AllyList = new List<string>();

            /*
            try
            {
                Clipboard.SetText(SortPlayersByDamage());
            }
            catch { }
            */

        }
 void oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs actionInfo)
 {
     if (ChromaReady == true && chk_enableEmnity.Checked && state != 3)
     {
         inCombat = true;
         ActiveEnconter = actionInfo.encounter;
         if (dpstickstart == true)
         {
             dpsloop.Stop();
             dpstickstart = false;
             dpsloop.Enabled = false;
         }
         if (state == 6)
         {
             skyWatcher.Enabled = false;
             updateState("transition", btn_emnityCol.BackColor, btn_defaultCol.BackColor, true);
             state = 6;
         }
         else if (state == 4)
         {
             updateState("transition", btn_emnityCol.BackColor, btn_defaultCol.BackColor, true);
             state = 4;
         }
         else
         {
             updateState("transition", btn_emnityCol.BackColor, btn_defaultCol.BackColor, true);
             state = 2;
         }
     }
 }
 private void OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     // TODO: Sure we will need this hook soon enough
     reflectionTracker.Clear();
     damageShielded = null;
 }
Exemple #35
0
 void oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     if (!isImport)
         encounterInfo.encounter.CharName = charName;
 }
Exemple #36
0
 void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     currInstID = 0xFFFF;
     if (!isImport)
         encounterInfo.encounter.CharName = charName;
 }
Exemple #37
0
 private void OFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
 {
     UpdateText("Combat Start");
 }
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            curActionTime = DateTime.MinValue;

            // Don't actually want this.  Maybe on zone changes.
            // purgePetCache();

            // Don't clear this.  PvP encounters can be split while Chaotic Growth is active.
            // magicMissileLastHit.Clear();

            unmatchedShieldLines.Clear();

            entityOwnerRegistery.Clear();
            playersCharacterFound = false;
        }
        void oFormActMain_OnCombatStart(bool isImport, CombatToggleEventArgs encounterInfo)
        {
            lock (locker)
            {
                lastCombatStart = ActGlobals.oFormActMain.LastKnownTime;

                if (buffData == null)
                {
                    buffData = new Dictionary<string, BuffData>();
                }
                else
                {
                    List<string> buffDeleteList = new List<string>();
                    foreach (var buff in buffData)
                    {
                        if (buff.Value.IsRunning())
                        {
                            if (buff.Value.StartTime.CompareTo(lastCombatEnd) < 1)
                            {
                                buff.Value.Restart(ActGlobals.oFormActMain.LastKnownTime);
                            }
                        }
                        else
                        {
                            buffDeleteList.Add(buff.Key);
                        }
                    }

                    foreach (var buff in buffDeleteList)
                    {
                        buffData.Remove(buff);
                    }
                }
            }
        }
        void oFormActMain_OnCombatEnd(bool isImport, CombatToggleEventArgs actionInfo)
        {
            inCombat = false;
            ActiveEnconter = null;
            if (dpstickstart == true)
            {
                dpsloop.Stop();
                dpstickstart = false;
                dpsloop.Enabled = false;
            }

            if (ChromaReady == true && chk_enableEmnity.Checked)
            {
                if (state == 6)
                {
                    setWeather(calculateWeather(currentZone));
                    skyWatcher.Enabled = true;
                    state = 6;
                }
                else if (state == 4)
                {
                    updateState("breath", btn_raidEffectsA.BackColor, btn_raidEffectsB.BackColor);
                    skyWatcher.Enabled = false;
                    state = 4;
                }
                else
                {
                    updateState("transition", btn_defaultCol.BackColor, btn_defaultCol.BackColor, true);
                    skyWatcher.Enabled = false;
                    state = 1;
                }
            }
        }