--- deliantra/server/random_maps/standalone.C 2006/12/12 21:39:56 1.7 +++ deliantra/server/random_maps/standalone.C 2006/12/31 19:02:24 1.12 @@ -1,3 +1,4 @@ + /* CrossFire, A Multiplayer game for X-windows @@ -38,7 +39,7 @@ { char InFileName[1024], OutFileName[1024]; maptile *newMap; - RMParms rp; + random_map_params rp; FILE *fp; if (argc < 3) @@ -57,7 +58,7 @@ init_readable (); init_gods (); - memset (&rp, 0, sizeof (RMParms)); + memset (&rp, 0, sizeof (random_map_params)); rp.Xsize = -1; rp.Ysize = -1; if ((fp = fopen (InFileName, "r")) == NULL) @@ -90,38 +91,38 @@ 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)) - { - 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 (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); - op->remove (); - op->destroy (); - break; + 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; @@ -139,9 +140,9 @@ 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) + 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; @@ -149,7 +150,7 @@ auto_apply (tmp); else if (tmp->type == TREASURE) { - if (HAS_RANDOM_ITEMS (tmp)) + if (tmp->has_random_items ()) while ((tmp->stats.hp--) > 0) create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); } @@ -157,17 +158,17 @@ { if (tmp->type == CONTAINER) { - if (HAS_RANDOM_ITEMS (tmp)) + if (tmp->has_random_items ()) while ((tmp->stats.hp--) > 0) create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); } - else if (HAS_RANDOM_ITEMS (tmp)) + 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) + 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); }