コード例 #1
0
        public void FightStart()
        {
            Fight f = null;

            var tracker = new FightTracker();

            tracker.OnFightStarted += (args) => f = args;
            tracker.Players.Add("Player1");
            //tracker.TrackPlayerFound(new PlayerFoundEvent { Timestamp = DateTime.Now, Name = "Player1" });
            Assert.Equal(0, tracker.Fights.Count);

            f = null;
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 100
            });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player2", Target = "Mob1", Type = "slash", Amount = 100
            });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Mob1", Target = "Player1", Type = "slash", Amount = 100
            });
            Assert.Equal(1, tracker.Fights.Count);
            Assert.Equal(1, tracker.ActiveFights.Count);
            Assert.NotNull(f);

            f = null;
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob2", Type = "slash", Amount = 100
            });
            Assert.Equal(2, tracker.Fights.Count);
            Assert.Equal(2, tracker.ActiveFights.Count);
            Assert.NotNull(f);
        }
コード例 #2
0
        public void FightHit_TrackOpponent()
        {
            var tracker = new FightTracker();

            tracker.Players.Add("Player1");
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 200
            });

            var f = tracker.Fights[0];

            Assert.Equal(f.Opponent.Name, "Mob1");
            Assert.Equal(f.Opponent, f.Participants[0]);
        }
コード例 #3
0
        public void FightCrit_AfterHit()
        {
            var tracker = new FightTracker();

            tracker.Players.Add("Player1");

            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 200
            });
            tracker.TrackFightCrit(new FightCritEvent {
                Timestamp = DateTime.Now, Source = "Player1", Amount = 200, Sequence = FightCritEventSequence.AfterHit
            });

            var f = tracker.Fights[0];

            Assert.Equal(0, f.Participants[1].AttackTypes[0].NormalHitCount);
            Assert.Equal(0, f.Participants[1].AttackTypes[0].NormalHitSum);
            Assert.Equal(1, f.Participants[1].AttackTypes[0].CritHitCount);
            Assert.Equal(200, f.Participants[1].AttackTypes[0].CritHitSum);
        }
コード例 #4
0
        public void FightHit_TrackDeadMob()
        {
            var tracker = new FightTracker();

            tracker.Players.Add("Player1");

            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Mob1", Target = "Player1", Type = "dot", Amount = 200
            });
            //tracker.TrackFightHit(new FightHitEvent { Timestamp = DateTime.Now, Source = "Mob1's corpse", Target = "Player1", Type = "dot", Amount = 350 });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Mob1", SourceIsCorpse = true, Target = "Player1", Type = "dot", Amount = 350
            });

            Assert.Equal(1, tracker.Fights.Count);
            var f = tracker.Fights[0];

            Assert.Equal(2, f.Participants.Count);
            Assert.Equal(2, f.Opponent.SourceHitCount);
            Assert.Equal(550, f.Opponent.SourceHitSum);
        }
コード例 #5
0
        public void FightFinish_Death()
        {
            Fight f       = null;
            var   tracker = new FightTracker();

            tracker.OnFightFinished += (args) => f = args;

            tracker.Players.Add("Player1");
            //tracker.TrackPlayerFound(new PlayerFoundEvent { Timestamp = DateTime.Now, Name = "Player1" });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 100
            });
            tracker.TrackDeath(new DeathEvent {
                Timestamp = DateTime.Now.AddSeconds(1), Name = "Mob1"
            });

            Assert.NotNull(f);
            Assert.Equal("Mob1", f.Opponent.Name);
            Assert.Equal(1, tracker.Fights.Count);
            Assert.Equal(0, tracker.ActiveFights.Count);
        }
コード例 #6
0
        public void FightFinish_Timeout()
        {
            Fight f       = null;
            var   tracker = new FightTracker();

            tracker.OnFightFinished += (args) => f = args;

            tracker.Players.Add("Player1");
            //tracker.TrackPlayerFound(new PlayerFoundEvent { Timestamp = DateTime.Now, Name = "Player1" });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 100
            });

            tracker.BeforeTracking(new RawLogEvent {
                Timestamp = DateTime.Now + tracker.FightTimeout, RawText = "..."
            });
            //tracker.CheckFightTimeouts();

            Assert.NotNull(f);
            Assert.Equal("Mob1", f.Opponent.Name);
            Assert.Equal(1, tracker.Fights.Count);
            Assert.Equal(0, tracker.ActiveFights.Count);
        }
コード例 #7
0
        public void SumHits()
        {
            var tracker = new FightTracker();

            tracker.Players.Add("Player1");
            tracker.Players.Add("Player2");
            //tracker.TrackPlayerFound(new PlayerFoundEvent { Timestamp = DateTime.Now, Name = "Player1" });
            //tracker.TrackPlayerFound(new PlayerFoundEvent { Timestamp = DateTime.Now, Name = "Player2" });

            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Amount = 100
            });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Amount = 200
            });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player2", Target = "Mob1", Amount = 350
            });
            //tracker.TrackDeath(new DeathEvent { Timestamp = DateTime.Now.AddSeconds(1), Name = "Mob1" });

            var f = tracker.ActiveFights[0];

            Assert.Equal(3, f.Participants.Count);

            Assert.Equal("Mob1", f.Participants[0].Name);
            Assert.Equal(3, f.Participants[0].TargetHitCount);
            Assert.Equal(650, f.Participants[0].TargetHitSum);

            Assert.Equal("Player1", f.Participants[1].Name);
            Assert.Equal(2, f.Participants[1].SourceHitCount);
            Assert.Equal(300, f.Participants[1].SourceHitSum);

            Assert.Equal("Player2", f.Participants[2].Name);
            Assert.Equal(1, f.Participants[2].SourceHitCount);
            Assert.Equal(350, f.Participants[2].SourceHitSum);
        }
コード例 #8
0
        public void FightCrit_Ignore()
        {
            var tracker = new FightTracker();

            tracker.Players.Add("Player1");

            // ignore crits where the damage is absorbed by a rune
            tracker.TrackFightCrit(new FightCritEvent {
                Timestamp = DateTime.Now, Source = "Player1", Amount = 200, Sequence = FightCritEventSequence.BeforeHit
            });
            tracker.TrackFightMiss(new FightMissEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "rune"
            });
            tracker.TrackFightHit(new FightHitEvent {
                Timestamp = DateTime.Now, Source = "Player1", Target = "Mob1", Type = "slash", Amount = 100
            });

            var f = tracker.Fights[0];

            Assert.Equal(1, f.Participants[1].AttackTypes[0].NormalHitCount);
            Assert.Equal(100, f.Participants[1].AttackTypes[0].NormalHitSum);
            Assert.Equal(0, f.Participants[1].AttackTypes[0].CritHitCount);
            Assert.Equal(0, f.Participants[1].AttackTypes[0].CritHitSum);
        }