It most certainly is able to tell if it's grouped or not (and it does do some bonus, but I think you want unlive like bonuses, so ..)
I would recommend modifying the Client::mod_client_xp function in zone/mod_functions.cpp. After all, that's what it's there for.
Basically you'll need to do something like
Code:
int32 Client::mod_client_xp(int32 in_xp, NPC *npc) {
if (!HasGroup() && !HasRaid())
in_xp += in_xp * 0.25;
return in_xp;
}
Or something similar (that should give a 25% bonus if not grouped/raided