GetObjectCreatures('town1', 1) > 299 and GetObjectiveState('obj1c') == OBJECTIVE_ACTIVE or GetObjectCreatures('town1' , 2) > 299 and GetObjectiveState('obj1c') == OBJECTIVE_ACTIVE or GetObjectCreatures('town1' , 106) > 299 and GetObjectiveState('obj1c') == OBJECTIVE_ACTIVE
Это длинное условие можно заменить на:
GetObjectCreatures('town1', 1) + GetObjectCreatures('town1', 2) + GetObjectCreatures('town1', 106) >= 300 and GetObjectiveState('obj1c') == OBJECTIVE_ACTIVE
Кстати, а зачем несколько раз в одном условии проверять активно ли задание?