--- deliantra/server/common/exp.C 2010/04/15 21:49:15 1.32
+++ deliantra/server/common/exp.C 2018/11/22 00:40:12 1.44
@@ -1,24 +1,25 @@
/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
- *
- * Copyright (©) 2005,2006,2007,2008,2009,2010 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
- *
+ *
* Deliantra is free software: you can redistribute it and/or modify it under
* the terms of the Affero GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the Affero GNU General Public License
* and the GNU General Public License along with this program. If not, see
* .
- *
+ *
* The authors can be reached via e-mail to
*/
@@ -150,32 +151,23 @@
sint64
level_to_min_exp (int level)
{
- if (level <= 0)
- return 0;
- else
- return levels [min (level, settings.max_level)];
+ return levels [clamp (level, 0, settings.max_level)];
}
/* This loads the experience table from the exp_table
- * file. This tends to exit on any errors, since it
- * populates the table as it goes along, so if there
- * are errors, the table is likely in an inconsistent
- * state.
+ * file.
*/
void
-init_experience ()
+_reload_exp_table ()
{
- char buf[MAX_BUF], *cp;
- int lastlevel = 0, comp;
- sint64 lastexp = -1, tmpexp;
+ int lastlevel = 0;
+ sint64 lastexp = -1;
- sprintf (buf, "%s/exp_table", settings.confdir);
-
- object_thawer thawer (buf);
+ object_thawer thawer (settings.datadir, "exp_table");
if (!thawer)
{
- LOG (llevError, "unable to parse experience table file");
+ LOG (llevError, "unable to load experience table file");
return;
}
@@ -188,9 +180,11 @@
thawer.get (settings.max_level);
sint64 newlevels [MAXNUMLEVELS];
+ newlevels [0] = 0;
while (thawer.next_line ())
{
+ sint64 tmpexp;
thawer.get (tmpexp);
/* Do some sanity checking - if value is bogus, just exit because