ChangeMiniQuest() Caches nur bei Bedarf erneuern

Bei vielen Aenderungen muss der MQ-Cache oder der
User-Cache nicht neu aufgebaut bzw. geloescht werden.

Change-Id: I6c9aa4bce4a31f679d987e24e5108a8a35026dd2
diff --git a/secure/questmaster.c b/secure/questmaster.c
index 4bfd1f8..11ce294 100644
--- a/secure/questmaster.c
+++ b/secure/questmaster.c
@@ -815,8 +815,17 @@
   MQMLOG(sprintf("ChangeMiniQuest: %s from %O to %O (%s)", mq_obj,
     altemq, m_entry(miniquests, mq_obj), getuid(this_interactive())));
 
-  ClearUsersMQCache();
-  RebuildMQCache();
+  // nur bei einigen Aenderungen muessen die Caches angefasst werden.
+  switch(param) {
+    case MQ_DATA_POINTS:
+      ClearUsersMQCache();
+      // Fallthrough - in diesem Fall muss auch der MQ-Cache neu erstellt
+      // werden.
+    case MQ_DATA_QUERY_PERMITTED:
+      RebuildMQCache();
+      break;
+  }
+
   if (find_call_out(#'DumpMiniQuests) == -1)
     call_out(#'DumpMiniQuests, 60, this_interactive());
   return 1;