--- deliantra/server/random_maps/exit.C 2008/09/29 09:04:51 1.31
+++ deliantra/server/random_maps/exit.C 2010/03/28 22:29:50 1.40
@@ -1,22 +1,23 @@
/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
*
- * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
- * Copyright (©) 2001,2007 Mark Wedel & Crossfire Development Team
- * Copyright (©) 1992,2007 Frank Tore Johansen
+ * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
+ * Copyright (©) 2001 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 GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * 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 GNU General Public License
- * along with this program. If not, see .
+ * 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
*/
@@ -28,7 +29,7 @@
/* find a character in the layout. fx and fy are pointers to
where to find the char. fx,fy = -1 if not found. */
-void
+static void
find_in_layout (int mode, char target, int *fx, int *fy, char **layout, random_map_params *RP)
{
int M;
@@ -118,7 +119,6 @@
void
place_exits (maptile *map, char **maze, char *exitstyle, int orientation, random_map_params *RP)
{
- char styledirname[1024];
maptile *style_map_down = 0; /* harder maze */
maptile *style_map_up = 0; /* easier maze */
object *the_exit_down; /* harder maze */
@@ -139,27 +139,22 @@
{
case 1:
{
- sprintf (styledirname, "/styles/exitstyles/up");
- style_map_up = find_style (styledirname, exitstyle, -1);
- sprintf (styledirname, "/styles/exitstyles/down");
- style_map_down = find_style (styledirname, exitstyle, -1);
+ style_map_up = find_style ("/styles/exitstyles/up" , exitstyle, -1);
+ style_map_down = find_style ("/styles/exitstyles/down", exitstyle, -1);
break;
}
case 2:
{
- sprintf (styledirname, "/styles/exitstyles/down");
- style_map_up = find_style (styledirname, exitstyle, -1);
- sprintf (styledirname, "/styles/exitstyles/up");
- style_map_down = find_style (styledirname, exitstyle, -1);
+ style_map_up = find_style ("/styles/exitstyles/down", exitstyle, -1);
+ style_map_down = find_style ("/styles/exitstyles/up" , exitstyle, -1);
break;
}
default:
{
- sprintf (styledirname, "/styles/exitstyles/generic");
- style_map_up = find_style (styledirname, exitstyle, -1);
- style_map_down = style_map_up;
+ style_map_up =
+ style_map_down = find_style ("/styles/exitstyles/generic", exitstyle, -1);
break;
}
}
@@ -297,7 +292,7 @@
if (RP->dungeon_level >= RP->dungeon_depth && *RP->final_map)
{
maptile *new_map;
- object *the_exit_back = arch_to_object (the_exit_up->arch);
+ object *the_exit_back = the_exit_up->arch->instance ();
/* load it */
if (!(new_map = maptile::find_sync (RP->final_map)))
@@ -313,9 +308,9 @@
* would require keeping a 'next' pointer, ad free_object kills tmp, which
* breaks the for loop.
*/
- if (tmp->type == EXIT && EXIT_PATH (tmp) && !strncmp (EXIT_PATH (tmp), "?random/", 8))
+ if (tmp->type == EXIT && EXIT_PATH (tmp).starts_with ("?random/"))
{
- tmp->destroy (true);
+ tmp->destroy ();
break;
}
@@ -332,7 +327,7 @@
}
}
else
- the_exit_down->slaying = "/!";
+ the_exit_down->slaying = shstr_random_map_exit;
/* Block the exit so things don't get dumped on top of it. */
the_exit_down->move_block = MOVE_ALL;