Example #1
0
 public Coroner(BoundDamageInfo info)
 {
     DamageInfo = info;
     AnalyzeDeath(info);
     HandleMinionDeath(info);
     AssignKillPhrase();
     AssignSpecialPhrase();
 }
Example #2
0
 public void Setup()
 {
     _arena = new Arena();
     _avengers = new Team("Avengers", null);
     _player1 = new Player(null, "Player 1", CanonicalString.Null, CanonicalString.Null, CanonicalString.Null, new UI.PlayerControls());
     _player2 = new Player(null, "Player 2", CanonicalString.Null, CanonicalString.Null, CanonicalString.Null, new UI.PlayerControls());
     _player3 = new Player(null, "Player 3", CanonicalString.Null, CanonicalString.Null, CanonicalString.Null, new UI.PlayerControls());
     _player2.AssignTeam(_avengers);
     _player3.AssignTeam(_avengers);
     _gob1 = new Gob { ID = 10, Owner = _player1, MaxDamageLevel = 100, Arena = _arena };
     _gob1DamagedBy2 = new Gob { ID = 11, Owner = _player1, MaxDamageLevel = 100, Arena = _arena };
     _gob2 = new Gob { ID = 2, Owner = _player2, MaxDamageLevel = 100, Arena = _arena };
     _gob3 = new Gob { ID = 3, Owner = _player3, MaxDamageLevel = 100, Arena = _arena };
     _gobNature = new Gob { ID = 4, Owner = null, MaxDamageLevel = 100, Arena = _arena };
     _info1Hit1 = new DamageInfo(_gob1).Bind(_gob1);
     _info2Hit1 = new DamageInfo(_gob2).Bind(_gob1);
     _info3Hit2 = new DamageInfo(_gob3).Bind(_gob2);
     _infoNatureHit1 = new DamageInfo(_gobNature).Bind(_gob1);
     _arena.TotalTime = TimeSpan.FromSeconds(10);
     _gob1DamagedBy2.InflictDamage(10, new DamageInfo(_gob2));
     _info1DamagedBy2 = DamageInfo.Unspecified.Bind(_gob1DamagedBy2);
 }
Example #3
0
 private void HandleMinionDeath(BoundDamageInfo info)
 {
     if (Game != null && Game.NetworkMode == NetworkMode.Client) return;
     if (KilledSpectator == null || !KilledSpectator.Minions.Contains(info.Target)) return;
     switch (DeathType)
     {
         default: throw new ApplicationException("Unexpected DeathType " + DeathType);
         case DeathTypeType.Accident:
             break;
         case DeathTypeType.TeamKill:
             break;
         case DeathTypeType.Kill:
             KillerSpectator.ArenaStatistics.Kills++;
             KillerSpectator.ArenaStatistics.KillsWithoutDying++;
             if (KillerSpectator.Team != null)
             {
                 KillerSpectator.Team.ArenaStatistics.Kills++;
                 KillerSpectator.Team.ArenaStatistics.KillsWithoutDying++;
             }
             break;
     }
     KilledSpectator.ArenaStatistics.Deaths++;
     KilledSpectator.ArenaStatistics.Lives--;
     KilledSpectator.ArenaStatistics.KillsWithoutDying = 0;
     if (KilledSpectator.Team != null)
     {
         KilledSpectator.Team.ArenaStatistics.Deaths++;
         KilledSpectator.Team.ArenaStatistics.Lives--;
         KilledSpectator.Team.ArenaStatistics.KillsWithoutDying = 0;
     }
 }
Example #4
0
 private void AnalyzeDeath(BoundDamageInfo info)
 {
     Action markAsSuicide = () =>
     {
         DeathType = DeathTypeType.Accident;
         KillerSpectator = null;
     };
     Action<Spectator> markAsTeamKill = teamKiller =>
     {
         DeathType = DeathTypeType.TeamKill;
         KillerSpectator = teamKiller;
     };
     Action<Spectator> markAsKill = killer =>
     {
         DeathType = DeathTypeType.Kill;
         KillerSpectator = killer;
     };
     if (info.SourceType == BoundDamageInfo.SourceTypeType.EnemyPlayer)
         markAsKill(info.Cause.Owner);
     else if (info.Target.LastDamagerOrNull != null)
         markAsKill(info.Target.LastDamagerOrNull);
     else if (info.SourceType == BoundDamageInfo.SourceTypeType.OwnTeamPlayer)
         markAsTeamKill(info.Cause.Owner);
     else
         markAsSuicide();
     KilledSpectator = info.Target.Owner;
 }