About morality in Heroes.
2) If morality (m) is greater than zero, whether it drops or not for a specific stack depends on the condition: mod(R, 24) + 1 <= m, where R is the aforementioned pseudo-random number (it can be found using a debugger or special programs). If this condition is met, morality drops; otherwise, it does not. I haven't yet analyzed the mechanics of "bad" morality dropping.
3) Conclusions: a) if a unit does not receive morality on one tile, it will not receive it on any of the others (and vice versa; provided that the unit is not attacking; thus, the hypothesis about "morality tiles" is incorrect);
Regarding point 2... I don't know much about assembly language... but I would like to know how the conclusion was made that mod(R, 24) + 1 <= m is the desired formula.
Regarding point 3... the conclusions were made by analyzing the executable file from the second Heroes game... but in the third, it might not be the same... so it cannot be stated definitively... I believe what I see... I stand by what I say ;)
Sincerely, K0Lb@zzeR.