private void StartFight(BossFightPhaseDetails boss) { if (current_boss_ != null) { EndFight(); } current_boss_ = boss; tracker_.OnBossFightStart(boss.boss_id); }
private void EndFight() { if (current_boss_ == null) { return; } tracker_.OnBossFightEnd(); current_boss_ = null; }
public FightTracker(CactbotOverlay overlay) { this.overlay_ = overlay; overlay_.OnZoneChanged += OnZoneChange; overlay_.OnLogsChanged += OnLogsChanged; overlay_.OnPartyWipe += OnPartyWipe; SetZoneListener(new GenericDungeonListener(this)); var o1s = new BossFightPhaseDetails { boss_id = "o1s", start_strings = { MakeCountdownString(), ":Alte Roite uses Wyrm Tail" }, end_strings = { ":Alte Roite was defeated by" }, }; var o2s = new BossFightPhaseDetails { boss_id = "o2s", start_strings = { MakeCountdownString(), ":Catastrophe uses Earthquake" }, end_strings = { ":Catastrophe was defeated by" }, }; var o3s = new BossFightPhaseDetails { boss_id = "o3s", start_strings = { MakeCountdownString(), ":Halicarnassus uses Critical Hit" }, end_strings = { ":Halicarnassus was defeated by" }, }; var o4s = new BossFightPhaseDetails { boss_id = "o4s-exdeath", start_strings = { ":Exdeath uses Dualcast" }, end_strings = { ":The limit gauge resets!" }, }; var o4s_neo = new BossFightPhaseDetails { boss_id = "o4s-neo", start_strings = { ":Neo Exdeath uses Almagest" }, end_strings = { ":Neo Exdeath is defeated" }, }; var shinryu_ex = new BossFightPhaseDetails { boss_id = "Shinryu Ex", start_strings = { MakeCountdownString(), ":Shinryu starts using Earthen Fury" }, end_strings = { "Removing combatant Shinryu. Max HP: 17167557." }, // TODO: implement phase triggers here // Phase 1 starts with combat, ends with dark matter cast // Phase 2 starts with "Added new Combatant Hakkinryu", ends with protostar cast // Phase 3 starts with protostar cast??, ends // Phase 4 starts with tidal wave }; var ucu_twintania = new BossFightPhaseDetails { boss_id = "ucu-twintania", start_strings = { MakeCountdownString(), ":Twintania:26A7:Unknown_26A7:" }, end_strings = { ":Something happens" }, }; var test_boss = new BossFightPhaseDetails { boss_id = "savage_test", start_strings = { MakeSealString("The Thinger") }, end_strings = { MakeSealString("The Thinger") }, }; boss_fights_ = new Dictionary <string, List <BossFightPhaseDetails> >() { { "Mist", new List <BossFightPhaseDetails> { test_boss } }, { "Deltascape V1.0 (Savage)", new List <BossFightPhaseDetails> { o1s } }, { "Deltascape V2.0 (Savage)", new List <BossFightPhaseDetails> { o2s } }, { "Deltascape V3.0 (Savage)", new List <BossFightPhaseDetails> { o3s } }, { "Deltascape V4.0 (Savage)", new List <BossFightPhaseDetails> { o4s, o4s_neo } }, { "Unknown Zone (2B7)", new List <BossFightPhaseDetails> { o1s } }, { "Unknown Zone (2B8)", new List <BossFightPhaseDetails> { o2s } }, { "Unknown Zone (2B9)", new List <BossFightPhaseDetails> { o3s } }, { "Unknown Zone (2Ba)", new List <BossFightPhaseDetails> { o4s, o4s_neo } }, { "", new List <BossFightPhaseDetails> { ucu_twintania } }, { "The Minstrel's Ballad: Shinryu's Domain", new List <BossFightPhaseDetails> { shinryu_ex } }, }; }