Fix für historisches Originalverhalten von P_ALERT
P_ALERT == 0 ist die historische Entsprechung zu P_ALERT == MB_MISC. Um
keinen Code für diesen Spezialfall in comm_beep() zu benötigen wird
P_ALERT daher in updates_after_restore() entsprechend korrigiert.
Change-Id: Ic2ffeae03abaae30f3094298da5dd3c9449d7057
diff --git a/doc/sphinx/props/P_ALERT.rst b/doc/sphinx/props/P_ALERT.rst
index ff1e372..ecff748 100644
--- a/doc/sphinx/props/P_ALERT.rst
+++ b/doc/sphinx/props/P_ALERT.rst
@@ -40,12 +40,14 @@
Bitte verwendet ReceiveMsg() mit MSG_ALERT, anstatt P_ALERT selbst
auszuwerten.
- Das historische Standardverhalten ist 0, hierbei werden Toene empfangen und
- es sind keine sonstigen Konfigurationen vorhanden.
+ Das historische Standardverhalten war 0, hierbei wurden alle Toene empfangen.
+ Der Klingelton fuer Kommunikation wurde nur ausgegeben, wenn
+ :doc:`PMESSAGE_BEEP` zusaetzlich > 0 war. Dieses Verhalten entspricht am
+ ehesten P_ALERT == MB_MISC.
SIEHE AUCH
----------
- :doc:`../lfun/ReceiveMsg`
+ :doc:`../lfun/ReceiveMsg`, :doc:`PMESSAGE_BEEP`
-Letzte Aenderung: 22.01.2022, Bugfix
+Letzte Aenderung: 30.06.2025, Bugfix
diff --git a/std/player/comm.c b/std/player/comm.c
index 8cdccdd..95c1a7b 100644
--- a/std/player/comm.c
+++ b/std/player/comm.c
@@ -1218,6 +1218,12 @@
QueryProp(P_ALERT) & ~ flags[part[1..]]);
}
}
+ // 0 hat leider historisch die Bedeutung von MB_MISC, daher muss hier
+ // statt dessen auf AL_NO_SOUND gesetzt werden.
+ if(!QueryProp(P_ALERT))
+ {
+ SetProp(P_ALERT, AL_NO_SOUND);
+ }
}
}
else
@@ -1240,12 +1246,12 @@
string types = CountUp(map(filter(m_indices(text), #'_alert_filter_flags), text));
if(!sizeof(types))
{
- types = "nichts";
+ types = "Keine";
}
ReceiveNotify(
- "Klingelton bei "
- + types
- + (beep_interval ? ", maximal alle " + beep_interval + " Sekunden." : ", immer.")
+ "Gewaehlte Klingeltoene: " + types + "\n"
+ "Zeitabstand: "
+ + (beep_interval ? "maximal alle " + beep_interval + " Sekunden." : "kein") + "\n"
+ (QueryProp(P_ALERT) & AL_NO_SOUND ? " Allerdings sind Toene insgesamt "
"bei Dir abgeschaltet. (\'hilfe ton\')" : ""),
query_verb());
@@ -2326,5 +2332,15 @@
// hinzufuegen, von wo es spaeter angezeigt wird.
if (commvault)
process_comm_vault(commvault);
+
+ // P_ALERT korrigieren
+ // Das historische Originalverhalten war, bei P_ALERT == 0 alle Klingeltöne
+ // abzuspielen. Benachrichtigungen für Kommunikation wurden jedoch nur
+ // abgespielt, wenn P_MESSAGE_BEEP zusaetzlich auf einen Wert > 0 gesetzt war.
+ // Diesem Verhalten kommt P_ALERT == MB_MISC am naechsten.
+ if(!QueryProp(P_ALERT))
+ {
+ SetProp(P_ALERT, MB_MISC);
+ }
}