+ if (Srv->IsUlined(user->server) || Srv->IsUlined(user->nick))
+ {
+ log(DEBUG, "Setting ulevel to U");
+ ulevel = chartolevel("U");
+ }
+ if (user->GetExt(founderkey))
+ {
+ log(DEBUG, "Setting ulevel to ~");
+ ulevel = chartolevel("~");
+ }
+ else if (user->GetExt(protectkey))
+ {
+ log(DEBUG, "Setting ulevel to &");
+ ulevel = chartolevel("&");
+ }
+ else
+ {
+ log(DEBUG, "Setting ulevel to %s", Srv->ChanMode(user, channel).c_str());
+ ulevel = chartolevel(Srv->ChanMode(user, channel));
+ }
+
+ /* Now it's the same idea, except for the target. If they're ulined make sure they get a higher level than the sender can */
+ if (Srv->IsUlined(target->server) || Srv->IsUlined(target->nick))
+ {
+ log(DEBUG, "Setting tlevel to U");
+ tlevel = chartolevel("U");
+ }
+ else if (target->GetExt(founderkey))
+ {
+ log(DEBUG, "Setting tlevel to ~");
+ tlevel = chartolevel("~");
+ }
+ else if (target->GetExt(protectkey))