summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/artefact.h
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/artefact.h')
-rw-r--r--crawl-ref/source/artefact.h35
1 files changed, 30 insertions, 5 deletions
diff --git a/crawl-ref/source/artefact.h b/crawl-ref/source/artefact.h
index 38ee3344d4..0844c2fc4c 100644
--- a/crawl-ref/source/artefact.h
+++ b/crawl-ref/source/artefact.h
@@ -12,6 +12,10 @@
#include "externs.h"
+// Artefacts which make noise can use this key to use a different
+// speech database key than the default.
+#define ART_NOISE_KEY "art_noise_key"
+
// NOTE: NO_UNRANDARTS is automatically set by util/art-data.pl
#define NO_UNRANDARTS 76
@@ -111,6 +115,15 @@ enum unrand_type
UNRAND_LAST = UNRAND_DUMMY2
};
+enum unrand_flag_type
+{
+ UNRAND_FLAG_NONE = 0x00,
+ UNRAND_FLAG_SPECIAL = 0x01,
+ UNRAND_FLAG_HOLY = 0x02,
+ UNRAND_FLAG_EVIL = 0x04,
+ UNRAND_FLAG_CHAOTIC = 0x08
+};
+
// The following unrandart bits were taken from $pellbinder's mon-util
// code (see mon-util.h & mon-util.cc) and modified (LRH).
struct unrandart_entry
@@ -118,11 +131,15 @@ struct unrandart_entry
const char *name; // true name of unrandart (max 31 chars)
const char *unid_name; // un-id'd name of unrandart (max 31 chars)
- object_class_type base_type; // class of ura
- int sub_type; // type of ura
- int plus; // plus of ura
- int plus2; // plus2 of ura
- int colour; // colour of ura
+ object_class_type base_type;
+ unsigned char sub_type;
+ short plus;
+ short plus2;
+ unsigned char colour; // colour of ura
+
+ short value;
+ unsigned char flags;
+
short prpty[ART_PROPERTIES];
// special description added to 'v' command output (max 31 chars)
@@ -131,6 +148,14 @@ struct unrandart_entry
const char *desc_id;
// special description added to 'v' command output (max 31 chars)
const char *desc_end;
+
+ void (*equip_func)(item_def* item, bool* show_msgs, bool unmeld);
+ void (*unequip_func)(const item_def* item, bool* show_msgs);
+ void (*world_reacts_func)(item_def* item);
+ void (*melee_effects_func)(item_def* item, actor* attacker,
+ actor* defender, bool mondied);
+ bool (*evoke_func)(item_def *item, int* pract, bool* did_work,
+ bool* unevokable);
};
bool is_known_artefact( const item_def &item );