This is a minor change to victory_when_enemies_defeated condition.
Old logic: If there are no not defeated sides which are enemies
of eachother (i.e. there is still a battle going on),
BUT victory_when_enemies_defeated = false, and either we found
a not defeated local human player, or we are a multiplayer observer
(there are no locally controlled sides), then don't end the level.
New logic: If there are no not defeated sides which are enemies,
BUT victory when enemies defeated = false, and EITHER we found a
not defeated local human player, OR there is a not defeated remote
human player AND no local human side assigned at all,
then don't end the level.
I think this more precisely the behavior we want. is_observer
doesn't belong in this function, and with the introduction of
defeat_condition, UMC will pretty much always be able to get the
behavior they want, so I'm much more comfortable to introduce this
change now than I would be otherwise.
- travis runs tests not in verbose mode,
*but* if there is a failure,
then it runs in very verbose mode, with strict mode off, to get
errors reported in the travis log.
- run_wml_tests points out that if you don't run in strict mode,
some tests may not fail as expected, so the count at the end
may differ
This brings the team names in line with the player names and other
behavior in mp_connect in debug mode. For instance there are other
lines like this:
dbf3331e9a/src/multiplayer_connect_engine.cpp (L155)
From inspecting the save files generated while testing this issue,
it's not clear if it could have actually caused a problem in game,
but it addresses an issue raised by SlowThinker on the bug tracker:
https://gna.org/bugs/index.php?21800
and does indeed fix a minor shortcoming of debug mode in mp connect
engine.
[side] now has an attribute defeat_condition which can be "no_leader"(default), "no_units" or "never"
"no_leader" behaves liek it behaved before.
"no_units" behaves like fight_on_without_leader=yes behaved before
"never" is new and causes the side to never get defeated, this usually means the scenariodesigner has to end the scenario with [endlevel]
making it a proxy field instead of a function makes it easier to use.
Also we now return a string so the luadev can distinuish between
'local_choice' and 'unsynced' which might be useful because [do_command]
cannot be used from 'local_choice'.
...if we are already in a synced_context.
undoing usually also removes things from the replay, so we cannot undo things if the don't put things in the replay.
On the Mac loaded images are not in the neutral format causing rendering
glitches when using blit_surface using these images. Test and when
needed convert the image before using it.
Fixes bug #22045.