/* CrossFire, A Multiplayer game for X-windows Copyright (C) 2002 Mark Wedel & Crossfire Development Team Copyright (C) 1992 Frank Tore Johansen This program 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 2 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, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The authors can be reached via e-mail at */ #define LO_NEWFILE 2 /* the main routine for making a standalone version. */ #include #include #include #include #include #include #include int main (int argc, char *argv[]) { char InFileName[1024], OutFileName[1024]; maptile *newMap; RMParms rp; FILE *fp; if (argc < 3) { printf ("\nUsage: %s inputfile outputfile\n", argv[0]); exit (0); } strcpy (InFileName, argv[1]); strcpy (OutFileName, argv[2]); init_globals (); init_library (); init_archetypes (); init_artifacts (); init_formulae (); init_readable (); init_gods (); memset (&rp, 0, sizeof (RMParms)); rp.Xsize = -1; rp.Ysize = -1; if ((fp = fopen (InFileName, "r")) == NULL) { fprintf (stderr, "\nError: can not open %s\n", InFileName); exit (1); } load_parameters (fp, LO_NEWFILE, &rp); fclose (fp); newMap = generate_random_map (OutFileName, &rp); new_save_map (newMap, 1); exit (0); } void set_map_timeout (maptile *) { } /* doesn't need to do anything */ #include /* some plagarized code from apply.c--I needed just these two functions without all the rest of the junk, so.... */ int auto_apply (object *op) { object *tmp = NULL; int i; switch (op->type) { case SHOP_FLOOR: if (!op->has_random_items ()) return 0; do { i = 10; /* let's give it 10 tries */ while ((tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5)) == NULL && --i); if (tmp == NULL) return 0; if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED)) { tmp->destroy (); tmp = NULL; } } while (!tmp); tmp->x = op->x, tmp->y = op->y; SET_FLAG (tmp, FLAG_UNPAID); insert_ob_in_map (tmp, op->map, NULL, 0); CLEAR_FLAG (op, FLAG_AUTO_APPLY); identify (tmp); break; case TREASURE: if (op->has_random_items ()) while ((op->stats.hp--) > 0) create_treasure (op->randomitems, op, GT_ENVIRONMENT, op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0); op->remove (); op->destroy (); break; } return tmp ? 1 : 0; } /* fix_auto_apply goes through the entire map (only the first time * when an original map is loaded) and performs special actions for * certain objects (most initialization of chests and creation of * treasures and stuff). Calls auto_apply if appropriate. */ void fix_auto_apply (maptile *m) { object *tmp, *above = NULL; int x, y; for (x = 0; x < MAP_WIDTH (m); x++) for (y = 0; y < MAP_HEIGHT (m); y++) for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = above) { above = tmp->above; if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY)) auto_apply (tmp); else if (tmp->type == TREASURE) { if (tmp->has_random_items ()) while ((tmp->stats.hp--) > 0) create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); } if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems) { if (tmp->type == CONTAINER) { if (tmp->has_random_items ()) while ((tmp->stats.hp--) > 0) create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); } else if (tmp->has_random_items ()) create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0); } } for (x = 0; x < MAP_WIDTH (m); x++) for (y = 0; y < MAP_HEIGHT (m); y++) for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = tmp->above) if (tmp->above && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL)) check_trigger (tmp, tmp->above); } /** * Those are dummy functions defined to resolve all symboles. * Added as part of glue cleaning. * Ryo 2005-07-15 **/ void new_draw_info (int a, int b, const object *ob, const char *txt) { fprintf (logfile, "%s\n", txt); } void new_info_map (int color, maptile *map, const char *str) { fprintf (logfile, "new_info_map: %s\n", str); } void move_teleporter (object *ob) { } void move_firewall (object *ob) { } void move_duplicator (object *ob) { } void move_marker (object *ob) { } void move_creator (object *ob) { } void emergency_save (int x) { } void clean_tmp_files (void) { } void esrv_send_item (object *ob, object *obx) { } void dragon_ability_gain (object *ob, int x, int y) { } void weather_effect (const char *c) { } void set_darkness_map (maptile *m) { } void move_apply (object *ob, object *obt, object *obx) { } object * find_skill_by_number (object *ob, int x) { return NULL; } void esrv_del_item (player *pl, int tag) { } void esrv_update_spells (player *pl) { } void monster_check_apply (object *ob, object *obt) { } void trap_adjust (object *ob, int x) { }