protected override void OnPluginEnabled() { if (IsWired) { return; } BotMain.OnStart += bot => Start(); BotMain.OnStop += bot => Stop(); BotMain.OnShutdownRequested += (sender, args) => Stop(); GameEvents.OnGameJoined += (sender, args) => RecordStat(() => Current.Games.Joined++); GameEvents.OnGameLeft += (sender, args) => RecordStat(() => Current.Games.Left++); GameEvents.OnPlayerDied += (sender, args) => RecordStat(() => Current.Player.Deaths++); GameEvents.OnWorldChanged += (sender, args) => SeenActorAnnIds.Clear(); ItemEvents.OnItemDropped += item => RecordItemStats(Current.Dropped, item); ItemEvents.OnItemPickedUp += item => RecordItemStats(Current.PickedUp, item); ItemEvents.OnItemSalvaged += item => RecordItemStats(Current.Salvaged, item); ItemEvents.OnItemStashed += item => RecordItemStats(Current.Stashed, item); ItemEvents.OnItemSold += item => RecordItemStats(Current.Sold, item); // For the stats on the Main UI ItemEvents.OnItemPickedUp += item => { if (item.IsGold || item.IsGem) { return; } GameEvents.FireItemLooted(item.AcdId); }; ItemEvents.OnItemSalvaged += item => GameEvents.FireItemSalvaged(item.AcdId); ItemEvents.OnItemStashed += item => GameEvents.FireItemStashed(item.AcdId); ItemEvents.OnItemSold += item => GameEvents.FireItemSold(item.AcdId); IsWired = true; }
private void RecordActorStats(TrinityActor actor) { if (!IsRunning) { return; } if (SeenActorAnnIds.Contains(actor.AnnId)) { return; } SeenActorAnnIds.Add(actor.AnnId); if (actor.IsUnit && actor.IsHostile) { if (actor.IsElite) { Current.Actors.Elites++; } if (actor.IsBoss) { Current.Actors.Bosses++; } } if (actor.ShrineType != ShrineTypes.None) { Current.Actors.Shrines++; } if (actor.IsTreasureGoblin) { Current.Actors.Goblins++; } }