начальное условие сниженной морали: разница в очках развития больше чем 4 раза [(Игрок нападающий / Игрок обороняющийся) >= 4 ] .
Если и пока начальное условие выполняется, высчитывается конечное значение морали:
switch (количество городов у игрока обороняющегося) {
case 1:
alert( '30%');
break;
case 2:
alert( '35%');
break;
case 3:
alert( '40%');
break;
case 4:
alert( '45%');
break;
case 5:
alert( '50%');
break;
case 6:
alert( '55%');
break;
case 7:
alert( '60%');
break;
case 8:
alert( '65%');
break;
case 9:
alert( '70%');
break;
case 10:
alert( '75%');
break;
case 11 или больше:
alert( '80%');
break;
}
Как-то так)) Иногда бывают исключения, например после 80% мораль может расти не сразу до 100%, а постепенно, например 82, 83, 85 и т.д.
Но это очень редкие случаи, и как правило ими можно пренебречь.