WorldPacket data(SMSG_LEVELUP_INFO, (4+4+MAX_POWERS_PER_CLASS*4+MAX_STATS*4));
data << uint32(level);
Après rapide vérification, il s'agit d'un uint32 qui est envoyé, et non d'un uint8 ... Tu peux donc potentiellement aller jusqu'à un niveau proche de 4 milliards x)
Après, il y a a coup sûr une vérification côté client pour adapter la valeur à l'interface, mais je ne vois pas de raison particulière à ce que la limite soit mise à 255 maximum.
Sur le papier donc, c'est tout à fait réalisable.
Par contre, ça nécessite quelques modifications. Par exemple le prototype de cette fonction :
void Player::GiveLevel(uint8 level)
doit au minimum être modifié pour integrer un uint32 et non un uint8. Il y en a une petite vingtaine à modifier dans le core.
Dernière modification, en DB cette fois : il faut rajouter des dans les tables liées au niveau (xp_for_level, player_levelstats, ...) pour ne pas avoir de "trou" dedans, sous peine d'obtenir des stats totalement cheatées.
Pour moi, 100% faisable côté serveur uniquement. Pas besoin de modifications client.