NL 12.12.5.
1. Build a level pack including some talisman levels.
2. In NL's options, name yourself X.
3. Cover your levelpack including all talismans with replays played by X.
4. As X, mass-verify your replay collection.
5. In NL's options, name yourself Y.
6. As Y, mass-verify your replay collection.
Expected: Identical output in steps 4 and 6 for each replay.
Observed: Different output in steps 4 and 6 for each talisman-winning replay.
When Y mass-verifies replays from X, then NL will still test for pass/fail correctly. NL will print pass/fail correctly to the screen and to the results file (the text output file in your NL worktree). But NL will refuse to tell Y whether X's replay achieved a talisman. NL will print talisman-winning replays as plain wins.
I understand that Y doesn't want X's talismans recorded in Y's personal statistics, but Y doesn't want X's plain wins written there, either. Then why does NL still print win/loss, but not talisman, during Y's mass-replay verification of X's replays?
Experienced NL designers/level maintainers: When you co-author a pack, or when you inherit a pack with talismans from another maintainer, how do you work with his replay collection? Do you mass-rename the player to yourself in the covering replays before you mass-verify the replays? Especially co-authoring a pack sounds impossible under this NL behavior without constantly renaming the players in all those replays.
-- Simon
Added this to Known Bugs (https://www.lemmingsforums.net/index.php?topic=6238.msg98545#msg98545) in SLX. Happy to send a PR if I manage to fix it.
Fixed this in SLX commit 53dd28045 (https://github.com/Willicious/SuperLemmixPlayer/commit/53dd280451e5c566c7280b8e6d032a1f16694cba).
@namida - The key is to let the talisman check run for all replays, but only update records if it's the user's replay. It's such a small change that it's probably not worth a PR, plus the postview text creation method has been refactored in SLX so wouldn't merge nicely anyway. Besides, you may wish to do it slightly differently.
Here's the suggested change anyway, in LemGame (scroll code to see addition):
procedure TLemmingGame.DoTalismanCheck;
var
i: Integer;
//// (Nested procedures)
begin
if fReplayManager.IsThisUsersReplay then <-----------------get rid of this
Exit; <-----------------get rid of this
for i := 0 to Level.Talismans.Count-1 do
begin
if CheckTalisman(Level.Talismans[i]) then
begin
fTalismanReceived := true;
if fReplayManager.IsThisUsersReplay then <------------------------------add this
begin <-------------------------------------{
if not GameParams.CurrentLevel.TalismanStatus[Level.Talismans[i].ID] then
fNewTalismanReceived := true;
GameParams.CurrentLevel.TalismanStatus[Level.Talismans[i].ID] := true;
end; <-------------------------------------{
end;
end;
end;
And in GamePostviewScreen, when creating the "talisman unlocked" text string (corrected for NL):
// top text
if gGotNewTalisman
and GlobalGame.ReplayManager.IsThisUsersReplay <----------------- add this
then
Add(STalismanUnlocked)