+ unsigned char n_monsters = rrand(0, 0) % 16;
+ unsigned char n_items = rrand(0, 0) % 48;
+ unsigned char i;
+ start = 1;
+ world.monster = 0;
+ for (i = 0; i < n_monsters; i++) {
+ if (start) {
+ monster = malloc(sizeof(struct Monster));
+ world.monster = monster;
+ start = 0; }
+ else {
+ monster->next = malloc(sizeof(struct Monster));
+ monster = monster->next; }
+ for (monster->pos.y = monster->pos.x = 0; 0 == is_passable(&map, monster->pos);) {
+ monster->pos.y = rrand(0, 0) % map.size.y;
+ monster->pos.x = rrand(0, 0) % map.size.x; }
+ monster->name = 'M'; }
+ if (!start)
+ monster->next = 0;
+ start = 1;
+ world.item = 0;
+ for (i = 0; i < n_items; i++) {
+ if (start) {
+ item = malloc(sizeof(struct Item));
+ world.item = item;
+ start = 0; }
+ else {
+ item->next = malloc(sizeof(struct Item));
+ item = item->next; }