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;