… | |
… | |
107 | if (gen->map == NULL) |
107 | if (gen->map == NULL) |
108 | { |
108 | { |
109 | //LOG(llevError,"Generator (%s) not on a map?\n", gen->name); |
109 | //LOG(llevError,"Generator (%s) not on a map?\n", gen->name); |
110 | return; |
110 | return; |
111 | } |
111 | } |
|
|
112 | |
112 | /*First count numer of objects in inv */ |
113 | /*First count numer of objects in inv */ |
113 | for (op = gen->inv; op; op = op->below) |
114 | for (op = gen->inv; op; op = op->below) |
114 | qty++; |
115 | qty++; |
|
|
116 | |
115 | if (!qty) |
117 | if (!qty) |
116 | { |
118 | { |
117 | LOG (llevError, "Generator (%s) has no inventory in generate_monster_inv?\n", &gen->name); |
119 | LOG (llevError, "Generator (%s) has no inventory in generate_monster_inv?\n", &gen->name); |
118 | return; /*No inventory */ |
120 | return; /*No inventory */ |
119 | } |
121 | } |
120 | qty = rndm (0, qty - 1); |
122 | qty = rndm (0, qty - 1); |
121 | for (op = gen->inv; qty; qty--) |
123 | for (op = gen->inv; qty; qty--) |
122 | op = op->below; |
124 | op = op->below; |
|
|
125 | |
123 | i = find_free_spot (op, gen->map, gen->x, gen->y, 1, 9); |
126 | i = find_free_spot (op, gen->map, gen->x, gen->y, 1, 9); |
124 | if (i == -1) |
127 | if (i == -1) |
125 | return; |
128 | return; |
|
|
129 | |
126 | head = object_create_clone (op); |
130 | head = object_create_clone (op); |
127 | CLEAR_FLAG (head, FLAG_IS_A_TEMPLATE); |
131 | CLEAR_FLAG (head, FLAG_IS_A_TEMPLATE); |
128 | unflag_inv (head, FLAG_IS_A_TEMPLATE); |
132 | unflag_inv (head, FLAG_IS_A_TEMPLATE); |
129 | if (rndm (0, 9)) |
133 | if (rndm (0, 9)) |
130 | generate_artifact (head, gen->map->difficulty); |
134 | generate_artifact (head, gen->map->difficulty); |
|
|
135 | |
131 | insert_ob_in_map_at (head, gen->map, gen, 0, gen->x + freearr_x[i], gen->y + freearr_y[i]); |
136 | insert_ob_in_map_at (head, gen->map, gen, 0, gen->x + freearr_x[i], gen->y + freearr_y[i]); |
132 | if (QUERY_FLAG (head, FLAG_FREED)) |
137 | if (QUERY_FLAG (head, FLAG_FREED)) |
133 | return; |
138 | return; |
|
|
139 | |
134 | if (head->has_random_items ()) |
140 | if (head->has_random_items ()) |
135 | create_treasure (head->randomitems, head, GT_APPLY, gen->map->difficulty, 0); |
141 | create_treasure (head->randomitems, head, GT_APPLY, gen->map->difficulty, 0); |
136 | } |
142 | } |
137 | |
143 | |
138 | void |
144 | void |