summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 79ff0ad..9e59275 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -529,7 +529,7 @@ void CRSM::greet(QString pcName)
if(Session.Clonk.LeaveAdmins.contains(info))
{
qint64 timeGone;
- if((timeGone = Session.Clonk.LeaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && !Session.Clonk.Admin.empty())
+ if((timeGone = Session.Clonk.LeaveAdmins.value(info).secsTo(QDateTime::currentDateTime())) < Config.Clonk.Chat.RegainAdminTime && (!Session.Clonk.Admin.empty() || !Session.IRC.Admin.empty()))
{
writeToServer(info.nick + "! Der Rundenadmin wurde freigegeben, weil du das Spiel verlassen hast.\nDu hast noch " + QString::number(Config.Clonk.Chat.RegainAdminTime - timeGone) + "s Zeit um den Rundenadmin zurückzuholen.\n");
}
@@ -2384,18 +2384,23 @@ CMD_FUNCTION_IMPL(admin)
return Success;
}
ClientInfo& interfaceAdmin = *interfaceAdminPtr;
+ bool noLeaveAdmin = userType < Admin && !(Session.Clonk.LeaveAdmins.contains(client) && Session.Clonk.LeaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < Config.Clonk.Chat.RegainAdminTime);
if(args.isEmpty() && interfaceAdmin == client)
{
respond(client, "Du bist bereits Rundenadmin!\n");
return Success;
}
- else if((!Session.IRC.Admin.empty() || !Session.Clonk.Admin.empty()) && userType < Admin && !(Session.Clonk.LeaveAdmins.contains(client) && Session.Clonk.LeaveAdmins.value(client).secsTo(QDateTime::currentDateTime()) < Config.Clonk.Chat.RegainAdminTime))
+ else if((!Session.IRC.Admin.empty() || !Session.Clonk.Admin.empty()) && noLeaveAdmin)
{
respond(client, Session.IRC.Admin.toString() + (!Session.IRC.Admin.nick.isEmpty() && !Session.Clonk.Admin.nick.isEmpty() ? " und " : "") + Session.Clonk.Admin.toString() + " ist bereits Rundenadmin!\n");
return Success;
}
else if(args.isEmpty())
{
+ if(!noLeaveAdmin)
+ {
+ Session.IRC.Admin.clear();
+ }
interfaceAdmin = client;
respond(client, client.toString() + " wurde als Rundenadmin eingetragen!\n");
return Success;