diff -u -r angband.org/src/cmd3.c angband/src/cmd3.c --- angband.org/src/cmd3.c Tue Jul 25 20:57:48 2000 +++ angband/src/cmd3.c Fri Sep 15 22:18:52 2000 @@ -440,23 +440,26 @@ /* Artifacts cannot be destroyed */ if (artifact_p(o_ptr)) { - int feel = INSCRIP_SPECIAL; - /* Message */ msg_format("You cannot destroy %s.", o_name); - /* Hack -- Handle icky artifacts */ - if (cursed_p(o_ptr) || broken_p(o_ptr)) feel = INSCRIP_TERRIBLE; - - /* Remove special inscription, if any */ - if (o_ptr->discount >= INSCRIP_NULL) o_ptr->discount = 0; - - /* Sense the object if allowed, don't sense ID'ed stuff */ - if ((o_ptr->discount == 0) && !object_known_p(o_ptr)) - o_ptr->discount = feel; + /* Don't mark id'ed objects */ + if (object_known_p(o_ptr)) return; - /* The object has been "sensed" */ - o_ptr->ident |= (IDENT_SENSE); + /* It has already been sensed */ + if (o_ptr->ident & (IDENT_SENSE)) + { + /* Already sensed objects always get improved feelings */ + if (cursed_p(o_ptr) || broken_p(o_ptr)) + o_ptr->discount = INSCRIP_TERRIBLE; + else + o_ptr->discount = INSCRIP_SPECIAL; + } + else + { + /* Mark the object as indestructible */ + o_ptr->discount = INSCRIP_INDESTRUCTIBLE; + } /* Combine the pack */ p_ptr->notice |= (PN_COMBINE); diff -u -r angband.org/src/defines.h angband/src/defines.h --- angband.org/src/defines.h Tue Jul 25 20:57:50 2000 +++ angband/src/defines.h Thu Sep 14 22:27:24 2000 @@ -1771,21 +1771,22 @@ /* * The special inscriptions. */ -#define INSCRIP_NULL 100 -#define INSCRIP_TERRIBLE 100+1 -#define INSCRIP_WORTHLESS 100+2 -#define INSCRIP_CURSED 100+3 -#define INSCRIP_BROKEN 100+4 -#define INSCRIP_AVERAGE 100+5 -#define INSCRIP_GOOD 100+6 -#define INSCRIP_EXCELLENT 100+7 -#define INSCRIP_SPECIAL 100+8 -#define INSCRIP_UNCURSED 100+9 +#define INSCRIP_NULL 100 +#define INSCRIP_TERRIBLE 100+1 +#define INSCRIP_WORTHLESS 100+2 +#define INSCRIP_CURSED 100+3 +#define INSCRIP_BROKEN 100+4 +#define INSCRIP_AVERAGE 100+5 +#define INSCRIP_GOOD 100+6 +#define INSCRIP_EXCELLENT 100+7 +#define INSCRIP_SPECIAL 100+8 +#define INSCRIP_UNCURSED 100+9 +#define INSCRIP_INDESTRUCTIBLE 100+10 /* * Number of special inscriptions, plus one. */ -#define MAX_INSCRIP 10 +#define MAX_INSCRIP 11 /* diff -u -r angband.org/src/dungeon.c angband/src/dungeon.c --- angband.org/src/dungeon.c Tue Jul 25 20:57:48 2000 +++ angband/src/dungeon.c Fri Sep 15 22:29:48 2000 @@ -222,7 +222,8 @@ if (!okay) continue; /* It already has a discount or special inscription */ - if (o_ptr->discount > 0) continue; + if ((o_ptr->discount > 0) && + (o_ptr->discount != INSCRIP_INDESTRUCTIBLE)) continue; /* It has already been sensed, do not sense it again */ if (o_ptr->ident & (IDENT_SENSE)) continue; @@ -233,6 +234,10 @@ /* Occasional failure on inventory items */ if ((i < INVEN_WIELD) && (0 != rand_int(5))) continue; + /* Indestructible objects are either excellent or terrible */ + if (o_ptr->discount == INSCRIP_INDESTRUCTIBLE) + heavy = TRUE; + /* Check for a feeling */ feel = (heavy ? value_check_aux1(o_ptr) : value_check_aux2(o_ptr)); diff -u -r angband.org/src/tables.c angband/src/tables.c --- angband.org/src/tables.c Tue Jul 25 20:57:50 2000 +++ angband/src/tables.c Thu Sep 14 22:34:18 2000 @@ -3322,6 +3322,7 @@ "good", "excellent", "special", - "uncursed" + "uncursed", + "indestructible" };