… | |
… | |
690 | int unique = 0; |
690 | int unique = 0; |
691 | for (object *op = spaces [i].bot; op; ) |
691 | for (object *op = spaces [i].bot; op; ) |
692 | { |
692 | { |
693 | object *above = op->above; |
693 | object *above = op->above; |
694 | |
694 | |
695 | if (QUERY_FLAG (op, FLAG_IS_FLOOR) && QUERY_FLAG (op, FLAG_UNIQUE)) |
695 | if (op->flag [FLAG_IS_FLOOR] && op->flag [FLAG_UNIQUE]) |
696 | unique = 1; |
696 | unique = 1; |
697 | |
697 | |
698 | if (op->head_ () == op && (QUERY_FLAG (op, FLAG_UNIQUE) || unique)) |
698 | if (op->head_ () == op && (op->flag [FLAG_UNIQUE] || unique)) |
699 | op->destroy (); |
699 | op->destroy (); |
700 | |
700 | |
701 | op = above; |
701 | op = above; |
702 | } |
702 | } |
703 | } |
703 | } |
… | |
… | |
854 | for (object *above, *op = ms->bot; op; op = above) |
854 | for (object *above, *op = ms->bot; op; op = above) |
855 | { |
855 | { |
856 | above = op->above; |
856 | above = op->above; |
857 | |
857 | |
858 | // do not decay anything above unique floor tiles (yet :) |
858 | // do not decay anything above unique floor tiles (yet :) |
859 | if (QUERY_FLAG (op, FLAG_IS_FLOOR) && QUERY_FLAG (op, FLAG_UNIQUE)) |
859 | if (op->flag [FLAG_IS_FLOOR] && op->flag [FLAG_UNIQUE]) |
860 | break; |
860 | break; |
861 | |
861 | |
862 | bool destroy = 0; |
862 | bool destroy = 0; |
863 | |
863 | |
864 | if (QUERY_FLAG (op, FLAG_IS_FLOOR) |
864 | if (op->flag [FLAG_IS_FLOOR] |
865 | || QUERY_FLAG (op, FLAG_OBJ_ORIGINAL) |
865 | || op->flag [FLAG_OBJ_ORIGINAL] |
866 | || QUERY_FLAG (op, FLAG_UNIQUE) |
866 | || op->flag [FLAG_UNIQUE] |
867 | || QUERY_FLAG (op, FLAG_OVERLAY_FLOOR) |
867 | || op->flag [FLAG_OVERLAY_FLOOR] |
868 | || QUERY_FLAG (op, FLAG_UNPAID) |
868 | || op->flag [FLAG_UNPAID] |
869 | || op->is_alive ()) |
869 | || op->is_alive ()) |
870 | ; // do not decay |
870 | ; // do not decay |
871 | else if (op->is_weapon ()) |
871 | else if (op->is_weapon ()) |
872 | { |
872 | { |
873 | op->stats.dam--; |
873 | op->stats.dam--; |
… | |
… | |
929 | sint64 total_exp = 0; |
929 | sint64 total_exp = 0; |
930 | |
930 | |
931 | for (mapspace *ms = spaces + size (); ms-- > spaces; ) |
931 | for (mapspace *ms = spaces + size (); ms-- > spaces; ) |
932 | for (object *op = ms->bot; op; op = op->above) |
932 | for (object *op = ms->bot; op; op = op->above) |
933 | { |
933 | { |
934 | if (QUERY_FLAG (op, FLAG_MONSTER)) |
934 | if (op->flag [FLAG_MONSTER]) |
935 | { |
935 | { |
936 | total_exp += op->stats.exp; |
936 | total_exp += op->stats.exp; |
937 | monster_cnt++; |
937 | monster_cnt++; |
938 | } |
938 | } |
939 | |
939 | |
940 | if (QUERY_FLAG (op, FLAG_GENERATOR)) |
940 | if (op->flag [FLAG_GENERATOR]) |
941 | { |
941 | { |
942 | total_exp += op->stats.exp; |
942 | total_exp += op->stats.exp; |
943 | |
943 | |
944 | if (archetype *at = op->other_arch) |
944 | if (archetype *at = op->other_arch) |
945 | { |
945 | { |
… | |
… | |
1127 | */ |
1127 | */ |
1128 | |
1128 | |
1129 | for (object *tmp = last; tmp; tmp = tmp->below) |
1129 | for (object *tmp = last; tmp; tmp = tmp->below) |
1130 | { |
1130 | { |
1131 | /* Once we get to a floor, stop, since we already have a floor object */ |
1131 | /* Once we get to a floor, stop, since we already have a floor object */ |
1132 | if (QUERY_FLAG (tmp, FLAG_IS_FLOOR)) |
1132 | if (tmp->flag [FLAG_IS_FLOOR]) |
1133 | break; |
1133 | break; |
1134 | |
1134 | |
1135 | /* If two top faces are already set, quit processing */ |
1135 | /* If two top faces are already set, quit processing */ |
1136 | if (top && middle) |
1136 | if (top && middle) |
1137 | break; |
1137 | break; |