%@ Language="Jscript" %>
<%
function calculateRating(u1rating, u2rating, winner)
{
u1rating = Number(u1rating);
oldrating = Number(u1rating);
u2rating = Number(u2rating);
winner = Number(winner);
var ratingdifference = Math.abs(u1rating - u2rating);
if (ratingdifference > 200)
ratingdifference = 200;
var percentage = 0.5 + (ratingdifference/420);
var gamepoints = 20;
switch (winner)
{
case (1):
if (u1rating > u2rating)
var points = Math.round((1 - percentage) * gamepoints);
else
var points = Math.round(percentage * gamepoints);
u1rating = u1rating + points;
u2rating = u2rating - points;
break;
case (0):
var points = Math.round(percentage * gamepoints);
if (u1rating > (u2rating + gamepoints))
{
u1rating = u1rating - Math.round(points/3);
u2rating = u2rating + Math.round(points/3);
}
else
if ((u1rating + gamepoints) < u2rating)
{
u1rating = u1rating + Math.round(points/3);
u2rating = u2rating - Math.round(points/3);
}
else
{
u1rating = u1rating + Math.round(points/3);
u2rating = u2rating + Math.round(points/3);
}
break;
case (2):
if (u1rating < u2rating)
var points = Math.round((1 - percentage) * gamepoints);
else
var points = Math.round(percentage * gamepoints);
u1rating = u1rating - points;
u2rating = u2rating + points;
break;
}
var diff = Number(u1rating - oldrating);
return diff;
}
var touserid = "";
var toaddress = "";
var toname = "";
//get gamestatus
var rs2 = Server.CreateObject("adodb.recordset");
sql = "select gamestatusid, rated from game where id = " + Request.QueryString("gameid");
rs2.Open(sql, conn);
var gamestatusid = String(rs2("gamestatusid"));
var rated = String(rs2("rated"));
var rs = Server.Createobject("adodb.recordset");
var sql = "select * from game where id = " + Request.QueryString("gameid");
rs.open(sql, conn);
var user1id = String(rs("user1id"));
var user2id = String(rs("user2id"));
var winnerid = String(rs("winnerid"));
rs.Close;
var messageid = "";
if (gamestatusid == 1)
{
messageid = 3;
sql = "update game set gamestatusid = 2 where id = " + Request.QueryString("gameid");
conn.Execute(sql);
//send email to user
if (Session("userid") == user1id)
touserid = user2id;
else
touserid = user1id;
sql = "select email, username from [user] where id = " + touserid;
rs.Open(sql);
toaddress = String(rs("email"));
toname = String(rs("username"));
var title = "";
var body = "";
title = "Challenge accepted!";
body = "Hi " + toname + "\n\n";
body += "Your opponent has accepted your challenge.\n";
body += "Now you can begin the game. You can check the game details at the Empire Deluxe Ladder.\n";
body += "\nThe Empire Deluxe Ladder\n";
body += "www.givoni.com/empire/";
sendEmail(toaddress, title, body);
}
else
{
messageid = 6;
//send email to user
if (Session("userid") == user1id)
touserid = user2id;
else
touserid = user1id;
sql = "select email, username from [user] where id = " + touserid;
rs.Open(sql);
toaddress = String(rs("email"));
toname = String(rs("username"));
var title = "";
var body = "";
title = "Game result accepted!";
body = "Hi " + toname + "\n\n";
body += "Your opponent has accepted the game result.\n";
body += "Your rating has been updated. To check out your new rating, please go to the Empire Deluxe Ladder.\n";
body += "\nThe Empire Deluxe Ladder\n";
body += "www.givoni.com/empire/";
sendEmail(toaddress, title, body);
}
sql = "insert into gamenegotiation (userid, messageid, [timestamp], gameid) values (";
sql += Session("userId") + ", ";
sql += messageid + ", ";
sql += "'" + getDate() + "', ";
sql += Request.QueryString("gameid");
sql += ")";
conn.Execute(sql);
if (gamestatusid == 3 && rated == 1)
{
//get result
var sql = "SELECT * FROM game WHERE id = " + Request.QueryString("gameid");
var rsGame = Server.CreateObject("adodb.recordset");
rsGame.Open(sql, conn);
winnerid = Number(rsGame("winnerid"));
if (winnerid == 0)
var result = 0;
else
if (winnerid == Number(user1id))
var result = 1;
else
var result = 2;
//UPDATE THE USERS RATING
var user1 = Server.CreateObject("adodb.recordset");
sql = "select * from [user] where id = " + user1id;
user1.open(sql, conn, 0, 3);
var user2 = Server.CreateObject("adodb.recordset");
sql = "select * from [user] where id = " + user2id;
user2.open(sql, conn, 0, 3);
var u1rating_old = Number(user1("rating"));
var u2rating_old = Number(user2("rating"));
u1 = u1rating_old;
u2 = u2rating_old;
var difference = calculateRating(u1, u2, result);
user1("rating") = u1rating_old + difference;
if (result == 0 && ((u1rating_old + 20) >= u2rating_old) && ((u1rating_old - 20) <= u2rating_old))
user2("rating") = u2rating_old + difference;
else
user2("rating") = u2rating_old - difference;
user1.Update();
user2.Update();
var sql = "select * from game where id = " + Request.QueryString("gameid");
var game = Server.Createobject("adodb.recordset");
game.open(sql, conn, 0, 3);
game("user1rating") = (user1("rating") - u1rating_old);
game("user2rating") = (user2("rating") - u2rating_old);
game.Update();
}
Response.Redirect("../player_data.asp");
%>