Esempio n. 1
0
 public List <Trophy> GetGameResults()
 {
     return(GameStats.GetTrophies());
 }
Esempio n. 2
0
 public void ChangeGender(int penalty)
 {
     CurrentGender       = CurrentGender == Gender.Male ? Gender.Female : Gender.Male;
     NextBattleModifier -= penalty;
     GameStats.LogGenderChange(currentPlayer.PlayerID);
 }
Esempio n. 3
0
 public static List <Trophy> GetTrophies()
 {
     if (Game.CurrentGame.results == null)
     {
         List <Trophy> trophies = new List <Trophy>();
         Game.CurrentGame.results = trophies;
         trophies.AddRange(CurrentGameStats.Where(gs => gs.Victory).Select(gs => new Trophy {
             Title = "King Munchkin", player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == gs.playerID).FirstOrDefault(), Reason = "For Thieving, Lying, Backstabbing, and all around Good Munchkinry... and for getting there first..."
         }));
         List <string> attempted = new List <string> {
             "King Munchkin"
         };
         while (CurrentGameStats.Where(gs => trophies.Where(t => t.player.PlayerID == gs.playerID).Count() == 0).Count() > 0 && attempted.Count < TrophyRequirement.possibleTrophies.Where(t => t.assists + t.deaths + t.genderChanges + t.kills + t.levelsLost + t.losses + t.maxGear + t.singleHandedKills + t.treasures + t.maxMonster + t.totalSales > 0).Count())
         {
             Trophy trophy = null;
             while (trophy == null && attempted.Count < TrophyRequirement.possibleTrophies.Where(t => t.assists + t.deaths + t.genderChanges + t.kills + t.levelsLost + t.losses + t.maxGear + t.singleHandedKills + t.treasures + t.maxMonster + t.totalSales > 0).Count())
             {
                 int r = rnd.Next(TrophyRequirement.possibleTrophies.Where(pt => !attempted.Contains(pt.Title) && (pt.assists + pt.deaths + pt.genderChanges + pt.kills + pt.levelsLost + pt.losses + pt.maxGear + pt.singleHandedKills + pt.treasures + pt.maxMonster + pt.totalSales > 0)).OrderByDescending(pt => pt.difficulty).Count());
                 TrophyRequirement tmp = TrophyRequirement.possibleTrophies.Where(pt => !attempted.Contains(pt.Title) && (pt.assists + pt.deaths + pt.genderChanges + pt.kills + pt.levelsLost + pt.losses + pt.maxGear + pt.singleHandedKills + pt.treasures + pt.maxMonster + pt.totalSales > 0)).OrderByDescending(pt => pt.difficulty).ToList()[r];
                 if (!attempted.Contains(tmp.Title))
                 {
                     attempted.Add(tmp.Title);
                 }
                 bool qualified = false;
                 foreach (GameStats gs in CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)))
                 {
                     if (tmp.assists > 0 && gs.assists >= tmp.assists)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.deaths > 0 && gs.deaths >= tmp.deaths)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.genderChanges > 0 && gs.genderChanges >= tmp.genderChanges)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.kills > 0 && gs.kills >= tmp.kills)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.levelsLost > 0 && gs.levelsLost >= tmp.levelsLost)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.losses > 0 && gs.losses >= tmp.losses)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.maxGear > 0 && gs.maxGear >= tmp.maxGear)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.maxMonster > 0 && gs.maxMonster >= tmp.maxMonster)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.singleHandedKills > 0 && gs.singleHandedKills >= tmp.singleHandedKills)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.treasures > 0 && gs.treasures >= tmp.treasures)
                     {
                         qualified = true;
                         break;
                     }
                     else if (tmp.totalSales > 0 && gs.totalSales >= tmp.totalSales)
                     {
                         qualified = true;
                         break;
                     }
                 }
                 if (qualified)
                 {
                     if (tmp.assists > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.assists);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.assists == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.assists)
                         };
                     }
                     else if (tmp.deaths > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.deaths);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.deaths == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.deaths)
                         };
                     }
                     else if (tmp.genderChanges > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.genderChanges);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.genderChanges == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.genderChanges)
                         };
                     }
                     else if (tmp.kills > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.kills);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.kills == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.kills)
                         };
                     }
                     else if (tmp.levelsLost > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.levelsLost);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.levelsLost == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.levelsLost)
                         };
                     }
                     else if (tmp.losses > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.losses);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.losses == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.losses)
                         };
                     }
                     else if (tmp.maxGear > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.maxGear);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.maxGear == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.maxGear)
                         };
                     }
                     else if (tmp.maxMonster > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.maxMonster);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.maxMonster == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.maxMonster)
                         };
                     }
                     else if (tmp.singleHandedKills > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.singleHandedKills);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.singleHandedKills == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.singleHandedKills)
                         };
                     }
                     else if (tmp.treasures > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.treasures);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.treasures == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.treasures)
                         };
                     }
                     else if (tmp.totalSales > 0)
                     {
                         int       max  = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Max(gs => gs.totalSales);
                         GameStats stat = CurrentGameStats.Where(gs => !trophies.Select(t => t.player.PlayerID).Contains(gs.playerID)).Where(gs => gs.totalSales == max).FirstOrDefault();
                         trophy = new Trophy
                         {
                             player = RoomState.CurrentState.playerStats.players.Where(p => p.PlayerID == stat.playerID).FirstOrDefault(),
                             Title  = tmp.Title,
                             Reason = string.Format(tmp.reason, stat.totalSales)
                         };
                     }
                 }
             }
             if (trophy != null)
             {
                 trophies.Add(trophy);
             }
         }
         while (CurrentGameStats.Where(gs => trophies.Where(t => t.player.PlayerID == gs.playerID).Count() == 0).Count() > 0)
         {
             Random            rnd    = new Random(Environment.TickCount);
             int               idx    = rnd.Next(0, TrophyRequirement.possibleTrophies.Where(t => t.assists + t.deaths + t.genderChanges + t.kills + t.levelsLost + t.losses + t.maxGear + t.singleHandedKills + t.treasures + t.maxMonster + t.totalSales == 0).Count());
             TrophyRequirement tmp    = TrophyRequirement.possibleTrophies.Where(t => t.assists + t.deaths + t.genderChanges + t.kills + t.levelsLost + t.losses + t.maxGear + t.singleHandedKills + t.treasures + t.maxMonster + t.totalSales == 0).ToList()[idx];
             Trophy            trophy = new Trophy
             {
                 player = RoomState.CurrentState.playerStats.players.Where(p => !trophies.Select(t => t.player.PlayerID).Contains(p.PlayerID)).FirstOrDefault(),
                 Title  = tmp.Title,
                 Reason = tmp.reason
             };
             trophies.Add(trophy);
         }
         return(trophies);
     }
     else
     {
         return(Game.CurrentGame.results);
     }
 }