--- deliantra/server/random_maps/standalone.C 2006/08/29 08:01:36 1.2 +++ deliantra/server/random_maps/standalone.C 2006/12/30 18:45:28 1.11 @@ -1,9 +1,4 @@ /* - * static char *rcsid_standalone_c = - * "$Id: standalone.C,v 1.2 2006/08/29 08:01:36 root Exp $"; - */ - -/* CrossFire, A Multiplayer game for X-windows Copyright (C) 2002 Mark Wedel & Crossfire Development Team @@ -23,7 +18,7 @@ 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 crossfire-devel@real-time.com + The authors can be reached via e-mail at */ #define LO_NEWFILE 2 @@ -38,85 +33,96 @@ #include #include -int main(int argc, char *argv[]) { - char InFileName[1024],OutFileName[1024]; - mapstruct *newMap; - RMParms rp; +int +main (int argc, char *argv[]) +{ + char InFileName[1024], OutFileName[1024]; + maptile *newMap; + random_map_params 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); + 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 (random_map_params)); + 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(mapstruct *) {} /* doesn't need to do anything */ +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) { +int +auto_apply (object *op) +{ object *tmp = NULL; int i; - switch(op->type) { - case SHOP_FLOOR: - if (!HAS_RANDOM_ITEMS(op)) 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)) - { - free_object(tmp); - 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 (HAS_RANDOM_ITEMS(op)) - 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); - remove_ob(op); - free_object(op); - break; - } + 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; } @@ -127,42 +133,43 @@ * treasures and stuff). Calls auto_apply if appropriate. */ -void fix_auto_apply(mapstruct *m) { - object *tmp,*above=NULL; - int x,y; - - for(x=0;xabove; - - if(QUERY_FLAG(tmp,FLAG_AUTO_APPLY)) - auto_apply(tmp); - else if(tmp->type==TREASURE) { - if (HAS_RANDOM_ITEMS(tmp)) - 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 (HAS_RANDOM_ITEMS(tmp)) - while ((tmp->stats.hp--)>0) - create_treasure(tmp->randomitems, tmp, 0, - m->difficulty,0); - } - else if (HAS_RANDOM_ITEMS(tmp)) - create_treasure(tmp->randomitems, tmp, GT_APPLY, - m->difficulty,0); +void +fix_auto_apply (maptile *m) +{ + object *tmp, *above = NULL; + int x, y; + + for (x = 0; x < m->width; x++) + for (y = 0; y < m->height; 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;xabove) - if (tmp->above - && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL)) - check_trigger(tmp,tmp->above); + for (x = 0; x < m->width; x++) + for (y = 0; y < m->height; 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); } /** @@ -170,81 +177,101 @@ * 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, mapstruct *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( mapstruct* 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 ) - { - } +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) +{ +}