Wozu dient das doppelte $sql="...";? Damit wird $sql doch sofort wieder überschrieben. Wenn überhaupt, und falls nach dem Kampf eine Ausgabe über die gegnerische Statistik stattfindet, müsste
$sql="SELECT pvpall,pvpwin,pvplose FROM accounts WHERE acctid={$badguy['acctid']}";
sein. (DB-Abfrage auf $sql später nicht vergessen.)
Und warum 4 DB-Afragen, wenns mit 2 geht?
$this->bbcode_second_pass_code('', 'if($defeat){
db_query("UPDATE accounts SET pvpall=pvpall+1,pvpwin=pvpwin+1 WHERE acctid={$badguy['acctid']}");
$session[user][pvpall]+=1;
$session[user][pvplose]+=1;
...')
und:
$this->bbcode_second_pass_code('', 'if($victory){
db_query("UPDATE accounts SET pvpall=pvpall+1,pvplose=pvplose+1 WHERE acctid={$badguy['acctid']}");
$session[user][pvpall]+=1;
$session[user][pvpwin]+=1;
...')
