void cough_up(object *monster) { object *obj; short row, col, i, n; if (cur_level < max_level) { return; } if (monster->m_flags & STEALS_GOLD) { obj = alloc_object(); obj->what_is = GOLD; obj->quantity = get_rand((cur_level * 15), (cur_level * 30)); } else { if (!rand_percent((int) monster->drop_percent)) { return; } obj = gr_object(); } row = monster->row; col = monster->col; for (n = 0; n <= 5; n++) { for (i = -n; i <= n; i++) { if (try_to_cough(row + n, col + i, obj)) { return; } if (try_to_cough(row - n, col + i, obj)) { return; } } for (i = -n; i <= n; i++) { if (try_to_cough(row + i, col - n, obj)) { return; } if (try_to_cough(row + i, col + n, obj)) { return; } } } free_object(obj); }
put_objects() { short i, n; object *obj; if (cur_level < max_level) { return; } n = coin_toss() ? get_rand(2, 4) : get_rand(3, 5); while (rand_percent(33)) { n++; } if (party_room != NO_ROOM) { make_party(); } for (i = 0; i < n; i++) { obj = gr_object(); rand_place(obj); } put_gold(); }