GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1802629-territorial-crash into lp:widelands.
Commit message: In territorial win conditions, remember the winning player's name in case the player got defeated a few milliseconds before the name is queried. More checks for defeated player. Requested reviews: Widelands Developers (widelands-dev) Related bugs: Bug #1802629 in widelands: "crash on terratorial win" https://bugs.launchpad.net/widelands/+bug/1802629 For more details, see: https://code.launchpad.net/~widelands-dev/widelands/bug-1802629-territorial-crash/+merge/359227 -- Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1802629-territorial-crash into lp:widelands.
=== modified file 'data/scripting/win_conditions/territorial_functions.lua' --- data/scripting/win_conditions/territorial_functions.lua 2018-10-16 06:53:20 +0000 +++ data/scripting/win_conditions/territorial_functions.lua 2018-11-23 08:52:32 +0000 @@ -86,6 +86,8 @@ -- last_winning_team = -1, -- -- The currently winning player, if any. -1 means that no player is currently winning. -- last_winning_player = -1, +-- -- The name of the currently winning player, if any. Empty means that no player is currently winning. +-- last_winning_player_name = "", -- -- Remaining time in secs for victory by > 50% territory. Default value is also used to calculate whether to send a report to players. -- remaining_time = 10, -- -- Points by player @@ -98,6 +100,9 @@ -- TODO(GunChleoc): We want to be able to list multiple winners in case of a draw. last_winning_team = -1, last_winning_player = -1, + -- We record the last winning player name here to prevent crashes with retrieving + -- the player name when the player was just defeated a few ms ago + last_winning_player_name = "", remaining_time = 10, all_player_points = {}, points = {} @@ -140,6 +145,7 @@ winning_teams[teaminfo.team] = true territory_points.last_winning_team = teaminfo.team territory_points.last_winning_player = -1 + territory_points.last_winning_player_name = "" else winning_teams[teaminfo.team] = nil end @@ -150,6 +156,7 @@ territory_was_kept = winning_players[playerinfo.number] ~= nil winning_players[playerinfo.number] = true territory_points.last_winning_player = playerinfo.number + territory_points.last_winning_player_name = players[playerinfo.number].name territory_points.last_winning_team = -1 else winning_players[playerinfo.number] = nil @@ -248,7 +255,7 @@ if territory_points.last_winning_team >= 0 then winner_name = team_str:format(territory_points.last_winning_team) elseif territory_points.last_winning_player >= 0 then - winner_name = players[territory_points.last_winning_player].name + winner_name = territory_points.last_winning_player_name end local remaining_minutes = math.max(0, math.floor(territory_points.remaining_time / 60)) === modified file 'data/scripting/win_conditions/territorial_lord.lua' --- data/scripting/win_conditions/territorial_lord.lua 2018-09-28 18:05:24 +0000 +++ data/scripting/win_conditions/territorial_lord.lua 2018-11-23 08:52:32 +0000 @@ -42,6 +42,8 @@ local function _send_state() set_textdomain("win_conditions") + check_player_defeated(plrs, lost_game.title, lost_game.body, wc_descname, wc_version) + for idx, player in ipairs(plrs) do local msg = "" if territory_points.last_winning_team == player.team or territory_points.last_winning_player == player.number then === modified file 'data/scripting/win_conditions/territorial_time.lua' --- data/scripting/win_conditions/territorial_time.lua 2018-09-28 18:05:24 +0000 +++ data/scripting/win_conditions/territorial_time.lua 2018-11-23 08:52:32 +0000 @@ -46,6 +46,8 @@ local function _send_state() set_textdomain("win_conditions") + check_player_defeated(plrs, lost_game.title, lost_game.body, wc_descname, wc_version) + local remaining_max_minutes = remaining_max_time // 60 for idx, player in ipairs(plrs) do local msg = ""
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp