--- deliantra/server/common/exp.C 2012/11/04 01:01:13 1.41 +++ deliantra/server/common/exp.C 2024/06/10 17:06:31 1.45 @@ -1,7 +1,8 @@ /* * This file is part of Deliantra, the Roguelike Realtime MMORPG. * - * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team + * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team + * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team * Copyright (©) 2002 Mark Wedel & Crossfire Development Team * Copyright (©) 1992 Frank Tore Johansen * @@ -179,6 +180,7 @@ thawer.get (settings.max_level); sint64 newlevels [MAXNUMLEVELS]; + newlevels [0] = 0; while (thawer.next_line ()) { @@ -196,9 +198,9 @@ lastlevel++; - if (lastlevel > settings.max_level) + if (lastlevel > settings.max_level || lastlevel >= MAXNUMLEVELS - 1) { - LOG (llevError, "Too many levels specified in table (%d > %d)\n", lastlevel, settings.max_level); + LOG (llevError, "Too many levels specified in table (%d > %d (settings.max_level) or >= %d (MAXNUMLEVELS - 1))\n", lastlevel, settings.max_level, MAXNUMLEVELS - 1); exit (1); } @@ -212,6 +214,10 @@ return; } + // copy the last exp value one level higher, so we can take the difference to the "next" level + // eve4n for players at max. level + newlevels [lastlevel + 1] = newlevels [lastlevel]; + memcpy (levels, newlevels, sizeof (levels)); }