Проверка набора условий
Истинность условий, ассоциированных с командой, проверяется перед запуском данной команды.
По-умолчанию истиными должны быть все условий, то есть должна выполняться конъюнкция (логическое И).
Если у команды установлен флаг OnlyOneConditionMustBeGood, тогда действует следующий порядок проверки условий:
- истиными должны быть все условия, помеченные флагом Locked (далее - залоченное условие), то есть выполняться конъюнкция (логическое И);
- истиной должна быть хотя бы одна команда, не помеченная флагом Locked, то есть выполняться дизъюнкция (логическое ИЛИ).
Примеры
Для наглядности условие с Loked = False
будет записаны в круглых скобках (УСЛОВИЕ_1), а залоченное условие Loked = True
- в квадратных скобках [УСЛОВИЕ_1]:
Пример 1
- УСЛОВИЕ_1 (Loked=False)
- УСЛОВИЕ_2 (Loked=False)
- УСЛОВИЕ_3 (Loked=False)
- УСЛОВИЕ_4 (Loked=False)
В данном случае при PlayWhileConditionsAreOk = False
совокупность условий будет проверяться по правилу И: истино, если ВСЕ условия истины.
(УСЛОВИЕ_1) И (УСЛОВИЕ_2) И (УСЛОВИЕ_3) И (УСЛОВИЕ_4)
При PlayWhileConditionsAreOk = True
совокупность условий будет проверяться по правилу ИЛИ: истино, если хотя бы одно условие истино.
(УСЛОВИЕ_1) ИЛИ (УСЛОВИЕ_2) ИЛИ (УСЛОВИЕ_3) ИЛИ (УСЛОВИЕ_4)
Пример 2
-
УСЛОВИЕ_1
(Loked=True)
- УСЛОВИЕ_2 (Loked=False)
-
УСЛОВИЕ_3
(Loked=True)
- УСЛОВИЕ_4 (Loked=False)
В данном случае при PlayWhileConditionsAreOk = False
ничего не меняется, совокупность условий будет проверяться по правилу И: истино, если ВСЕ условия истины.
{ [УСЛОВИЕ_1] И [ УСЛОВИЕ_3 ] } И { (УСЛОВИЕ_2) И (УСЛОВИЕ_4) }
При PlayWhileConditionsAreOk = True
совокупность условий будет проверяться по смешанному правилу: истино, если истины оба условия 1, 3 и хотя бы одно из условий 2 или 4.
{ [УСЛОВИЕ_1] И [УСЛОВИЕ_3]} И { (УСЛОВИЕ_2) ИЛИ (УСЛОВИЕ_4) }
Пример 3
-
УСЛОВИЕ_1
(Loked=True)
-
УСЛОВИЕ_2
(Loked=True)
-
УСЛОВИЕ_3
(Loked=True)
- УСЛОВИЕ_4 (Loked=False)
В данном случае независимо от значения флага PlayWhileConditionsAreOk совокупность условий будет проверяться по правилу И: истино, если ВСЕ условия истины.
{ [УСЛОВИЕ_1] И [УСЛОВИЕ_2] И [УСЛОВИЕ_3] } И { (УСЛОВИЕ_4) }
Пример 4
-
УСЛОВИЕ_1
(Loked=True)
-
УСЛОВИЕ_2
(Loked=True)
-
УСЛОВИЕ_3
(Loked=True)
-
УСЛОВИЕ_4
(Loked=True)
В данном случае при PlayWhileConditionsAreOk = False
ничего не меняется, и совокупность условий будет проверяться по правилу И: истино, если ВСЕ условия истины.
{ [УСЛОВИЕ_1] И [УСЛОВИЕ_2] И [УСЛОВИЕ_3] И [УСЛОВИЕ_4] } .
Если PlayWhileConditionsAreOk = True
проверка ВСЕГДА выдает ложный результат, даже если все из условий 1-4 будут истины.
{ [УСЛОВИЕ_1] И [УСЛОВИЕ_3] И [УСЛОВИЕ_2] И [УСЛОВИЕ_4] } И {ПУСТОЕ_МНОЖЕСТВО_УСЛОВИЙ }
В данном случае ПУСТОЕ_МНОЖЕСТВО_УСЛОВИЙ с опушенным флагом Loked бот оценивает как ЛОЖЬ.