//argument0 - PID
//argument1 - Request ID
//  0 - Join from other
//  1 - Summon from other
//  2 - Join by self
//  3 - Summon by self
//  4 - (Unused; is Deny in online message IDs)
//  5 - Add from other
//  6 - Add by self
//  7 - Spot from other
//  8 - Spot by self
//  9 - Dig from other
//  10 - Dig by self

//Cancel out contradictory statements:
if(argument1 == 0 || argument1 == 1)
{
if(rq_dig(argument0,0,0) >= 0)
{
rq_collapse(rq_dig(argument0,0,0));
}
}
else if(argument1 == 2 || argument1 == 3)
{
if(rq_dig(argument0,1,0) >= 0)
{
rq_collapse(rq_dig(argument0,1,0));
}
}
else if(argument1 == 5 && rq_find(argument0,5)) rq_collapse(rq_find(argument0,5));
else if(argument1 == 6 && rq_find(argument0,6)) rq_collapse(rq_find(argument0,6));
else if(argument1 == 7 || argument1 == 9)
{
if(rq_dig(argument0,0,2) >= 0)
{
rq_collapse(rq_dig(argument0,0,2));
}
}
else if(argument1 == 8 || argument1 == 10)
{
if(rq_dig(argument0,1,2) >= 0)
{
rq_collapse(rq_dig(argument0,1,2));
}
}


//Join confirm:
if(argument1 == 0)
{
if(rq_find(argument0,3) >= 0 || argument0 == global.duopid)
{
if(rq_find(argument0,3) >= 0)
  rq_collapse(rq_find(argument0,3));
global.jid = argument0;
server.image_speed = 1;
server.sprite_index = JoinOut;
return 1;
}
}
else if(argument1 == 3)
{
if(rq_find(argument0,0) >= 0)
{
rq_collapse(rq_find(argument0,0));
global.jid = argument0;
server.image_speed = 1;
server.sprite_index = JoinOut;
return 1;
}
}

//Summon confirm:
if(argument1 == 1)
{
if(rq_find(argument0,2) >= 0 || argument0 == global.duopid)
{
if(rq_find(argument0,2) >= 0)
  rq_collapse(rq_find(argument0,2));
if(argument0 == global.duopid)
{
clearbuffer();
writebyte(15);
writebyte(0);
writebyte(argument0);
sendmessage(global.s_tcpsocket);
}
rq_areasend(argument0);
return 1;
}
}
else if(argument1 == 2)
{
if(rq_find(argument0,1) >= 0)
{
rq_collapse(rq_find(argument0,1));
rq_areasend(argument0);
return 1;
}
}

//Add (friend) confirm:
if(argument1 == 5)
{
if(rq_find(argument0,6) >= 0)
{
rq_collapse(rq_find(argument0,6));
return 1;
}
}
else if(argument1 == 6)
{
if(rq_find(argument0,5) >= 0)
{
rq_collapse(rq_find(argument0,5));
return 1;
}
}

//This client Digs confirm:
if(argument1 == 7)
{
if(rq_find(argument0,10) >= 0)
{
rq_collapse(rq_find(argument0,10));
return 1;
}
}
else if(argument1 == 10)
{
if(rq_find(argument0,7) >= 0)
{
rq_collapse(rq_find(argument0,7));
return 1;
}
}

//This client Spots confirm:
if(argument1 == 9)
{
if(rq_find(argument0,8) >= 0)
{
rq_collapse(rq_find(argument0,8));
return 1;
}
}
else if(argument1 == 8)
{
if(rq_find(argument0,9) >= 0)
{
rq_collapse(rq_find(argument0,9));
return 1;
}
}

if((argument1 >= 0 && argument1 <= 3 && argument0 != global.duopid) || argument1 > 3)
global.rq_pid[global.rq_total] = argument0;
global.rq_type[global.rq_total] = argument1;
global.rq_timer[global.rq_total] = 900;
global.rq_total += 1;

if(global.rqtotal > 10)
{
rq_collapse(0);
}

return 0;