green belly, вот вам пару наводок:
Функция GetPlayerHeroes() возвращает массив героев, функция GiveHeroBattleBonus() принимает первым параметром имя одного героя. Нужно проходить циклом по всем героям в массиве. Например для PLAYER_2:
for i, hero in hero2 do
GiveHeroBattleBonus(hero, бонус морали, -3);
end
И так для всех противников.
Функция zdanie1F() принимает на вход имя героя который коснулся триггера. Это отражено было в коде который вам скидывал Азгалор. Его и нужно проверять в HasHeroSkill().
Знаки -- это комментарии, то есть не являются кодом. Советую глянуть какую-нибудь статью про lua, станет понятнее.