private void SmocCheck(StatsDatabase Driver)
{
Log("Processing SMOC Rank", LogLevel.Notice);
// Vars
List<Dictionary<string, object>> Rows;
List<Dictionary<string, object>> Players;
// Fetch all Sergeant Major's, Order by Score
Players = Driver.Query("SELECT id, score FROM player WHERE rank=10 OR rank=11 ORDER BY score DESC LIMIT 1");
if (Players.Count == 1)
{
int Id = Int32.Parse(Players[0]["id"].ToString());
// Check for currently awarded Smoc
Rows = Driver.Query("SELECT id, earned FROM awards WHERE awd=6666666 LIMIT 1");
if (Rows.Count > 0)
{
// Check for same and determine if minimum tenure servred
int MinTenure = Program.Config.ASP_SpecialRankTenure * 86400;
int Sid = Int32.Parse(Rows[0]["id"].ToString());
int Earned = Int32.Parse(Rows[0]["earned"].ToString());
// Assign new Smoc If the old SMOC's tenure is up, and the current SMOC is not the highest scoring SGM
if (Id != Sid && (Earned + MinTenure) < this.RoundEndTime)
{
// Delete old SMOC's award
Driver.Execute("DELETE FROM awards WHERE id=@P0 AND awd=6666666", Sid);
// Change current SMOC rank back to SGM
Driver.Execute("UPDATE player SET rank=10, chng=0, decr=1 WHERE id =" + Sid);
// Award new SMOC award
Driver.Execute("INSERT INTO awards(id,awd,earned) VALUES(@P0,@P1,@P2)", Id, 6666666, this.RoundEndTime);
// Update new SMOC's rank
Driver.Execute("UPDATE player SET rank=11, chng=1, decr=0 WHERE id =" + Id);
}
}
else
{
// Award SGMOC award
Driver.Execute("INSERT INTO awards(id,awd,earned) VALUES(@P0,@P1,@P2)", Id, 6666666, this.RoundEndTime);
// Update SGMOC rank
Driver.Execute("UPDATE player SET rank=11, chng=1, decr=0 WHERE id =" + Id);
}
}
}