ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/exp.C
(Generate patch)

Comparing deliantra/server/common/exp.C (file contents):
Revision 1.31 by root, Thu Apr 15 19:12:29 2010 UTC vs.
Revision 1.38 by root, Sat Dec 31 06:18:01 2011 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992 Frank Tore Johansen 6 * Copyright (©) 1992 Frank Tore Johansen
7 * 7 *
8 * Deliantra is free software: you can redistribute it and/or modify it under 8 * Deliantra is free software: you can redistribute it and/or modify it under
9 * the terms of the Affero GNU General Public License as published by the 9 * the terms of the Affero GNU General Public License as published by the
148} 148}
149 149
150sint64 150sint64
151level_to_min_exp (int level) 151level_to_min_exp (int level)
152{ 152{
153 if (level <= 0)
154 return 0;
155 else
156 return levels [min (level, settings.max_level)]; 153 return levels [clamp (level, 0, settings.max_level)];
157} 154}
158 155
159/* This loads the experience table from the exp_table 156/* This loads the experience table from the exp_table
160 * file. This tends to exit on any errors, since it 157 * file.
161 * populates the table as it goes along, so if there
162 * are errors, the table is likely in an inconsistent
163 * state.
164 */ 158 */
165void 159void
166init_experience () 160reload_exp_table ()
167{ 161{
168 char buf[MAX_BUF], *cp;
169 int lastlevel = 0, comp; 162 int lastlevel = 0;
170 sint64 lastexp = -1, tmpexp; 163 sint64 lastexp = -1;
171 164
172 sprintf (buf, "%s/exp_table", settings.confdir); 165 object_thawer thawer (settings.datadir, "exp_table");
173
174 object_thawer thawer (buf);
175 166
176 if (!thawer) 167 if (!thawer)
177 { 168 {
178 LOG (llevError, "unable to parse experience table file"); 169 LOG (llevError, "unable to load experience table file");
179 return; 170 return;
180 } 171 }
181 172
182 if (thawer.kw != KW_max_level) 173 if (thawer.kw != KW_max_level)
183 { 174 {
184 thawer.parse_error ("experience table file", "max_level"); 175 thawer.parse_error ("experience table file");
185 return; 176 return;
186 } 177 }
187 178
188 thawer.get (settings.max_level); 179 thawer.get (settings.max_level);
189 180
190 sint64 newlevels [MAXNUMLEVELS]; 181 sint64 newlevels [MAXNUMLEVELS];
191 182
192 while (thawer.next_line ()) 183 while (thawer.next_line ())
193 { 184 {
185 sint64 tmpexp;
194 thawer.get (tmpexp); 186 thawer.get (tmpexp);
195 187
196 /* Do some sanity checking - if value is bogus, just exit because 188 /* Do some sanity checking - if value is bogus, just exit because
197 * the table otherwise is probably in an inconsistent state 189 * the table otherwise is probably in an inconsistent state
198 */ 190 */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines