1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2024-11-24 10:15:12 +00:00
notnotdnethack/include/artilist.h
Ron Nazarov 14212ff3d3
Remove NEARDATA
Another thing from the DOS port that makes no sense on modern systems.
2024-05-01 23:58:56 +01:00

4030 lines
120 KiB
C

/* SCCS Id: @(#)artilist.h 3.4 2003/02/12 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef ARTILIST_H
#define ARTILIST_H
#include "macromagic.h"
/* we need to set these *before* makedefs.c or else it won't be getting the right number of arguments */
#define PROPS(...) {FIRST_TEN(dummy __VA_OPT__(,) __VA_ARGS__, 0,0,0,0,0,0,0,0,0,0)}
#define FIRST_TEN(dummy, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, ...) a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
#define NO_MONS() 0, 0, 0, 0, 0, 0, 0, 0, 0
//#define MONS(mt, mfm, mft, mfb, mfg, mfr, mfv, mfw) mt, mfm, mft, mff, mfb, mfg, mfr, mfv, mfw
#define MONS(...) SET09(0,0,0,0,0,0,0,0,0, __VA_ARGS__)
#define vsMSYM(x) C01((x))
#define vsMM(x) C02((x))
#define vsMT(x) C03((x))
#define vsMF(x) C04((x))
#define vsMB(x) C05((x))
#define vsMG(x) C06((x))
#define vsMA(x) C07((x))
#define vsMV(x) C08((x))
#define vsMW(x) C09((x))
#define NO_ATTK() 0, 0, 0
#define ATTK(adtyp, acc, dam) adtyp, acc, dam
#define NOINVOKE 0
#define NOFLAG 0
#ifdef MAKEDEFS_C
/* in makedefs.c, all we care about is the list of names */
#define A(nam, ...) nam
static const char *artifact_names[] = {
#else
/* set up the actual artifact list structure */
#include "hack.h"
#include "artifact.h"
#define A(nam, typ, desc, cost, mat, siz, wgt, aln, cls, rac, val, gen, vsmons, attack, afl, wpr, wfl, cpr, cfl, inv, ifl) { \
typ, nam, desc, \
cost, mat, siz, wgt, \
aln, cls, rac, val, gen, \
vsmons, \
attack, afl, \
wpr, wfl, \
cpr, cfl, \
inv, ifl }
//struct artifact * artilist;
const struct artifact base_artilist[] = {
#endif /* MAKEDEFS_C */
/* Artifact cost rationale:
* 1. The more useful the artifact, the better its cost.
* 2. Quest artifacts are highly valued.
* 3. Chaotic artifacts are inflated due to scarcity (and balance).
*/
/* dummy element #0, so that all interesting indices are non-zero */
A("", STRANGE_OBJECT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, NO_TIER, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
//////////////////////Crowning Gifts///////////////////////////////////////
/*Take Me Up/Cast Me Away*/
/*Excalibur is a very accurate weapon, a property that almost doesn't matter except for vs high level demons*/
/*Excalibur does extra blessed damage to demons and undead, +3d7 instead of 1d4*/
A("Excalibur", LONG_SWORD, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 20, 10), NOFLAG,
PROPS(DRAIN_RES, SEARCHING), (ARTP_SEEK),
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Dirge", LONG_SWORD, "half-melted %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_KNIGHT, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_ACID, 5, 10), NOFLAG,
PROPS(ACID_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*
* Stormbringer only has a 2 because it can drain a level,
* providing 8 more.
*
* Stormbringer now has a 10% chance to get +8 damage,
* and then convert all damage to level drain damage (dmg/4)
*
* Stormbringer now always counts as cursed against curse hating
* targets
*
* Stormbringer now gives its wielder great strength and vitality
* (25 Str and Con)
*
* Stormbringer cuts through any substance (ie, it counts as phasing)
*/
A("Stormbringer", RUNESWORD, (const char *)0,
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_MAJOR),
NO_MONS(),
ATTK(AD_DRLI, 5, 2), (ARTA_DRAIN|ARTA_PHASING),
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_BLOODTHRST)
),
/*
* Two problems: 1) doesn't let trolls regenerate heads,
* 2) doesn't give unusual message for 2-headed monsters (but
* allowing those at all causes more problems than worth the effort).
*
* Special code in weapon.c uses an extra die (2d12, 2d8) and makes the dice explode
* According to an article on 1d4Chan, the average of an exploding die is roughly that of a die one size larger
* -> effectively, 2d14+2/2d10+2
*/
A("Vorpal Blade", ISAMUSEI, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_S, NOFLAG,
NO_MONS(),
ATTK(AD_PHYS, 5, 1), (ARTA_VORPAL|ARTA_DEXPL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Marauder's Map", SCR_MAGIC_MAPPING, "parchment scroll",
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_PIRATE, NON_PM, TIER_B, (ARTG_INHER),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
OBJECT_DET, NOFLAG
),
/*//////////Nameable Artifacts//////////*/
/*most nameables can be twoweaponed, look in obj.h */
/*
* Orcrist and Sting have same alignment as elves.
*/
A("Orcrist", ELVEN_BROADSWORD, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ELF, TIER_C, (ARTG_NAME|ARTG_NOGEN),
MONS(vsMA(MA_ORC | MA_DEMON)),
ATTK(AD_PHYS, 10, 0), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/*
* The combination of SPFX_WARN and M2_something on an artifact
* will trigger EWarn_of_mon for all monsters that have the appropriate
* M2_something flags. In Sting's case it will trigger EWarn_of_mon
* for MA_ORC monsters.
*/
A("Sting", ELVEN_DAGGER, (const char *)0,
800L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ELF, TIER_F, (ARTG_NAME),
MONS(vsMA(MA_ORC | MA_ARACHNID)),
ATTK(AD_PHYS, 5, 0), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Grimtooth", ORCISH_DAGGER, (const char *)0,
300L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ORC, TIER_D, (ARTG_NAME),
MONS(vsMA(MA_ELF | MA_HUMAN | MA_DWARF)),
ATTK(AD_PHYS, 5, 0), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Carnwennan", DAGGER, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, NON_PM, TIER_C, (ARTG_NOGEN), /* ARTG_NAME is added during game-creation for eligible characters */
MONS(vsMT(MT_MAGIC), vsMA(MA_FEY)),
ATTK(AD_PHYS, 5, 10), (ARTA_HATES),
PROPS(STEALTH), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
INVIS, NOFLAG
),
/*DF Dwarves can be a nasty lot.*/
/*two handed, so no twoweaponing.*/
A("Slave to Armok", DWARVISH_MATTOCK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, PM_DWARF, TIER_F, (ARTG_NAME|ARTG_NOGEN),
MONS(vsMT(MT_PEACEFUL), vsMG(MG_LORD|MG_PRINCE), vsMA(MA_ELF | MA_ORC)),
ATTK(AD_PHYS, 5, 0), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_BLOODTHRST)
),
A("Claideamh", LONG_SWORD, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN | ARTG_NAME),
MONS(vsMA(MA_ELF | MA_FEY | MA_GIANT | MA_ELEMENTAL | MA_PRIMORDIAL)),
ATTK(AD_PHYS, 5, 0), (ARTA_HATES),
PROPS(WARN_OF_MON), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*//////////The Banes//////////*/
/*banes can be twoweaponed, look in obj.h*/
/* also makes a handy weapon for knights, since it can't break */
A("Dragonlance", LANCE, (const char *)0,
5000L, DRAGON_HIDE, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_GIFT|ARTG_INHER),
MONS(vsMA(MA_DRAGON | MA_REPTILIAN)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(REFLECTING), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
A("Nodensfork", TRIDENT, "wave-etched %s",
5000L, SHELL_MAT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
MONS(vsMA(MA_PRIMORDIAL | MA_ET), vsMV(MV_TELEPATHIC | MV_RLYEHIAN)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_SILVER|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(SHOCK_RES, WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
A("Gaia's Fate", SICKLE, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, NOFLAG,
MONS(vsMA(MA_PLANT | MA_INSECTOID | MA_ARACHNID | MA_AVIAN | MA_REPTILIAN | MA_ANIMAL | MA_FEY | MA_ELF | MA_ELEMENTAL)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
A("Demonbane", SABER, (const char *)0,
2500L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_GIFT),
MONS(vsMA(MA_DEMON)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(), (ARTP_NOCALL),
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/* silver, protects from lycanthropy, and works against quite a number of late-game enemies */
A("Werebane", SABER, "wolf-hilted %s",
1500L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
MONS(vsMA(MA_WERE | MA_DEMIHUMAN)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(), (ARTP_NOWERE),
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/* deducts movement points from hit giants, and also works vs a few late game enemies */
/* bonus damage applies to all large monsters, and has better damage than a normal axe (base d6+d4/3d4 total) */
A("Giantslayer", AXE, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
MONS(vsMT(MT_ROCKTHROW), vsMA(MA_GIANT)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/* effective vs some standard castlevainia enemy types*/
/*is given extra damage in weapon.c, since whip damage is so low*/
A("The Vampire Killer", BULLWHIP, "bloodstained chain whip",
2500L, METAL, MZ_DEFAULT, WT_SPECIAL,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_GIFT|ARTG_INHER),
MONS(vsMA(MA_UNDEAD | MA_DEMON | MA_WERE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_CANCEL),
PROPS(DRAIN_RES), (ARTP_NOWERE),
PROPS(), NOFLAG,
BLESS, NOFLAG
),
/* works against just about all the late game baddies */
A("Kingslayer", STILETTO, "delicately filigreed %s",
2500L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
MONS(vsMG(MG_LORD | MG_PRINCE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_POIS|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/* speaks for itself */
A("Peace Keeper", ATHAME, "minute-rune-covered %s",
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
MONS(vsMT(MT_HOSTILE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_SILVER|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* vorpal smashes ogres (20/20 chance) */
/* set str and con to 25, and smashing ogres excercises str and wis <- A-tier */
A("Ogresmasher", WAR_HAMMER, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
MONS(vsMSYM(S_OGRE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_VORPAL|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* petrifies trolls, gives bonus damage aginst monsters who pop in to ruin your day */
A("Trollsbane", MORNING_STAR, (const char *)0,
2000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
MONS(vsMSYM(S_TROLL), vsMG(MG_REGEN)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES|ARTA_BRIGHT|ARTA_CANCEL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*//////////First Gifts//////////*/
//first gifts can be twoweaponed by their associated classes, look in obj.h
/*
* Mjollnir will return to the hand of the wielder when thrown
* if the wielder is a Valkyrie wearing Gauntlets of Power.
*
* Now it will never strike the Valkyrie or fall to the ground,
* if both are in good condition.
*/
A("Mjollnir", WAR_HAMMER, "lightning-bolt embossed %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_VALKYRIE, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_ELEC, 5, 24), (ARTA_EXPLELEC),
PROPS(SHOCK_RES, BLIND_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Pen of the Void",ATHAME, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_VOID, PM_EXILE, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
VOID_CHIME, NOFLAG
),
A("Luck Blade", SHORT_SWORD, "clover-inscribed %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_CONVICT, NON_PM, TIER_D, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 7, 7), (ARTA_DLUCK),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LUCK)
),
A("Cleaver", BATTLE_AXE, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_BARBARIAN, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), (ARTA_SHATTER),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Atlantean Royal Sword", TWO_HANDED_SWORD, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_BARBARIAN, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), (ARTA_SHATTER),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Need a way to convert era times to Japanese luni-solar months.*/
A("Kiku-ichimonji", KATANA, "chrysanthemum-hilted %s",
1200L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_SAMURAI, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 4, 12), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Jinja Naginata", NAGINATA, (const char *)0,
1200L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_SAMURAI, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 4, 12), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Rhongomyniad", LANCE, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, NON_PM, TIER_D, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Rod of Lordly Might", MACE, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_SPECIAL,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LORDLY, (ARTI_ENGRAVE)
),
/* uses the Musicalize skill; learns special abilities from hearing songs */
A("The Singing Sword", LONG_SWORD, "softly singing %s",
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_BARD, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_INHER|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 1, 1), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
SINGING, NOFLAG
),
/*Needs encyc entry*/
A("Xiuhcoatl", BULLWHIP, (const char *)0,
4000L, DRAGON_HIDE, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_FIRE, 3, 12), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
LORDLY, NOFLAG
),
/*invoke for skeletons, life draining */
A("Staff of Necromancy", QUARTERSTAFF, "skull-topped %s",
6660L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_VAMPIRE, TIER_C, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_DRLI, 5, 0), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
SKELETAL_MINION, NOFLAG
),
/*
* Magicbane is a bit different! Its magic fanfare
* unbalances victims in addition to doing some damage.
*/
/*Needs encyc entry?*/
/*provides curse res while wielded */
A("Magicbane", ATHAME, "mystically runed %s",
3500L, METAL, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_WIZARD, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_MAGM, 3, 4), (ARTA_MAGIC),
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* The name is meant to translate to "Sword of the Fuma clan,"
* "Ken" being a word for "sword" (as in "Bokken," "wooden sword")
* "no" being "of", and "Fuma-itto" being "Fuma-clan" (or so I hope...),
* this being a clan of ninja from the Sengoku era
* (there should be an accent over the u of "Fuma" and the o of "-itto").
* Nethack Samurai call broadswords "Ninja-to," which is the steriotypical ninja sword.
* Aparently, there was no such thing as an actual Ninja-to, it's something Hollywood made up!
*/
A("Fuma-itto no Ken", BROADSWORD, (const char *)0,
1200L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 1, 8), (ARTA_HATES|ARTA_CROSSA|ARTA_POIS), /* missing: SPFX2_NINJA */
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_AMMO, NOFLAG /*makes shuriken*/
),
A("The Golden Sword of Y'ha-Talla", SCIMITAR, "scorpion-bladed %s",
3000L, GOLD, MZ_DEFAULT, WT_SPECIAL,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_DRST, 5, 0), (ARTA_POIS),
PROPS(POISON_RES), NOFLAG,
PROPS(), NOFLAG,
LORDLY, NOFLAG
),
/*Needs encyc entry*/
/* adds sneak attacks "from behind" (allowing sneak attacks for anyone, and increasing damage for rogues/etc) */
A("Spineseeker", SHORT_SWORD, (const char *)0,
1200L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_F, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 6), NOFLAG,
PROPS(STEALTH), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*//////////Double Damage Artifacts//////////*/
A("Grayswandir", SABER, "amber-swirled %s",
8000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(HALLUC_RES), NOFLAG,
PROPS(WARNING), NOFLAG,
NOINVOKE, NOFLAG
),
A("Frost Brand", LONG_SWORD, "ice-runed %s",
3000L, GLASS, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_COLD, 1, 0), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("Fire Brand", LONG_SWORD, "ember-runed %s",
3000L, OBSIDIAN_MT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_FIRE, 1, 0), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("The Green Dragon Crescent Blade", NAGINATA, (const char *)0,
1200L, MT_DEFAULT, MZ_DEFAULT, WT_SPECIAL,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 25), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Mirror Brand", LONG_SWORD, "polished %s",
3000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_MAGM, 1, 0), (ARTA_MAGIC|ARTA_HATES|ARTA_CROSSA),
PROPS(REFLECTING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Sunsword", LONG_SWORD, "sun-bladed %s",
1500L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
MONS(vsMA(MA_UNDEAD | MA_DEMON)),
ATTK(AD_PHYS, 1, 0), (ARTA_HATES | ARTA_SILVER | ARTA_BRIGHT | ARTA_BLIND | ARTA_PHASING | ARTA_CANCEL),
PROPS(BLIND_RES, SEARCHING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LIGHT)
),
/*can be thrown by dwarves*/
A("The Axe of the Dwarvish Lords", BATTLE_AXE, "dwarf-faced %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, PM_DWARF, TIER_A, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(XRAY_VISION, TELEPORT_CONTROL), NOFLAG, /*x-ray vision is for dwarves only.*/
PROPS(), NOFLAG,
NOINVOKE, (ARTI_DIG)
),
/*returns to your hand.*/
/*Needs encyc entry*/
A("Windrider", BOOMERANG, "winged %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
ATTK(AD_PHYS, 1, 0), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Rod of the Ram", MACE, "ram-headed %s",
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), (ARTA_KNOCKBACKX),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* attack power is bound to wielder's life force */
A("The Atma Weapon", BEAMSWORD, "horned %s",
6660L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
MONS(vsMG(MG_NASTY)),
ATTK(AD_PHYS, 6, 6), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* attack power is bound to wielder's magical energy */
A("Limited Moon", MOON_AXE, (const char *)0,
6660L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Black Arrow", ANCIENT_ARROW, (const char *)0,
4444L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*also has a haste effect when wielded, but massively increases hunger and damages the wielder*/
/*The invoked attack is very powerful*/
A("Tensa Zangetsu", TSURUGI, "black %s",
4444L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_GIFT | ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(HALF_SPDAM), NOFLAG,
PROPS(), NOFLAG,
SPEED_BANKAI, NOFLAG
),
/*//////////Other Artifacts//////////*/
/*Sort of intermediate between a double damage and a utility weapon,*/
/*Sode no Shirayuki gains x2 ice damage after using the third dance.*/
/*however, it only keeps it for a few rounds, and the other dances are attack magic. */
A("Sode no Shirayuki", KATANA, "snow-white %s", // colored not covered
8000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT | ARTG_INHER),
NO_MONS(),
ATTK(AD_COLD, 1, 0), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
ICE_SHIKAI, NOFLAG
),
/*Tobiume is an awkward weapon. It loses 3 damage vs large and 2 vs small*/
/*Ram and Fire blast only trigger if enemy is low hp*/
A("Tobiume", LONG_SWORD, "three-branched %s",
8000L, METAL, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_GIFT | ARTG_INHER),
NO_MONS(),
ATTK(AD_FIRE, 1, 1), (ARTA_DISARM),
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
FIRE_SHIKAI, NOFLAG
),
A("The Lance of Longinus", SPEAR, (const char *)0,
1500L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, REFLECTING, HALF_PHDAM, HALF_SPDAM), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
WWALKING, NOFLAG
),
A("The Silver Sky", LONG_SWORD, (const char *)0,
1500L, SILVER, MZ_MEDIUM, WT_DEFAULT,
A_NONE, NON_PM, PM_GITHYANKI_PIRATE, TIER_B, (ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 1, 12), (ARTA_VORPAL),
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
GITH_ART, NOFLAG
),
A("The Sky Reflected", BROADSWORD, (const char *)0,
1500L, MERCURIAL, MZ_MEDIUM, WT_DEFAULT,
A_NONE, NON_PM, PM_GITHYANKI_PIRATE, TIER_B, (ARTG_NAME|ARTG_NOGEN|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 8, 1), NOFLAG,
PROPS(REFLECTING), NOFLAG,
PROPS(), NOFLAG,
ZERTH_ART, NOFLAG
),
A("The Amalgamated Skies", TWO_HANDED_SWORD, (const char *)0,
1500L, MERCURIAL, MZ_LARGE, 150,
A_NONE, NON_PM, PM_GITHYANKI_PIRATE, TIER_S, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 8, 12), (ARTA_SILVER|ARTA_VORPAL),
PROPS(FREE_ACTION, REFLECTING), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
AMALGUM_ART, NOFLAG
),
// /* still uses the old artifact structure */
// /* TODO aggrevate 'f' */
// A("The Pink Panther", DIAMOND, 0, 0,
// (SPFX_NOGEN|SPFX_RESTR), 0, 0,
// NO_ATTK(), NO_DFNS, NO_CARY,
// TRAP_DET, A_NONE, PM_ARCHEOLOGIST, NON_PM, 0L,
// 0,0,0),
A("The Arkenstone", DIAMOND, "rainbow-glinting %s",
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(AGGRAVATE_MONSTER), NOFLAG,
CONFLICT, (ARTI_PERMALIGHT)
),
/*Needs encyc entry*/
A("Release from Care", SCYTHE, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 10), (ARTA_VORPAL),
PROPS(DRAIN_RES), NOFLAG,
PROPS(COLD_RES), NOFLAG,
HEALING, NOFLAG
),
/*Needs encyc entry*/
/* can only behead on sneak attacks */
/* uses STR and DEX scaling, +16 max */
A("The Lifehunt Scythe",SCYTHE, (const char *)0,
4000L, DRAGON_HIDE, MZ_LARGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 6, 6), (ARTA_HATES|ARTA_VORPAL), /* damage only applies vs living or undead monsters */
PROPS(DRAIN_RES, STEALTH), NOFLAG,
PROPS(COLD_RES), NOFLAG,
INVIS, (ARTI_PLUSTEN)
),
/* effectively becomes two sizes larger when lit, requiring two hands */
/* attack bonus only applies vs non-magic resistant targets and only when lit */
A("The Holy Moonlight Sword", LONG_SWORD, (const char *)0, // begging for a description but i couldn't think of a good one
4000L, METAL, MZ_DEFAULT, WT_DEFAULT, // if it gets one, it would be sick to have a slightly different one while lit, requires some work tho
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 12, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
ENLIGHTENING, (ARTI_PLUSTEN)
),
/* can be transformed by offering your blood */
/* transformation costs 20% health to activate, lasts for 20+2d10 turns */
/* while active, adds +defender mlev to blood damage, can be applied to cause an AoE and clear active*/
A("Bloodletter", MORNING_STAR, (const char *)0,
4000L, IRON, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_INHER),
NO_MONS(),
ATTK(AD_BLUD, 8, 12), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
BLOODLETTER, (ARTI_PLUSTEN)
),
/* astel's head on a stick */
/* pincer staff that's dubiously alive and shoots explosions, rocks and lasers */
/* invoke to throw some magical explosions at things adjacent or around you, dealing 3d12+3xspe. invoke up triggers living effects */
/* also does 2x base to is_aliens, an extra 1d12 magic on grabbed targets above 20 insight */
/* as living when wielded, above 40 insight is alive, randomly (insight > d100) throws 4d(spe/2) rocks at non-flying targets within 3 tiles occasionally */
/* as an invoke, can end rock attacks with a 6d6 magic beam towards that target, doesn't bounce/can't reflect. only possible when invoked */
A("Fallingstar Mandibles", PINCER_STAFF, (const char *)0,
4000L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_INHER),
NO_MONS(),
ATTK(AD_MAGM, 12, 12), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
WAVES_DARKNESS, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("The Silence Glaive", GLAIVE, (const char *)0,
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_F, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_DRLI, 1, 1), (ARTA_DRAIN),
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
SATURN, NOFLAG
),
/*Needs encyc entry*/
/*also has a haste effect when wielded, but massively increases hunger*/
A("The Garnet Rod", UNIVERSAL_KEY, "garnet-tipped rod",
8000L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REGENERATION, ENERGY_REGENERATION), NOFLAG,
PROPS(), NOFLAG,
PLUTO, NOFLAG
),
/*Needs encyc entry*/
/* also protects vs curses while carried */
A("Helping Hand", GRAPPLING_HOOK, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_INHER),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(STEALTH, WARNING, SEARCHING), (ARTP_SEEK),
PROPS(), NOFLAG,
UNTRAP, (ARTI_ENGRAVE)
),
/*Needs encyc entry*/
A("The Blade Singer's Saber", RAKUYO, (const char *)0,
1500L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 8, 8), (ARTA_HASTE),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
BLADESONG, NOFLAG
),
/*Needs encyc entry*/
A("The Blade Dancer's Dagger", RAKUYO_DAGGER, (const char *)0,
1500L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOCNT|ARTG_NOGEN),
NO_MONS(),
ATTK(AD_PHYS, 4, 4), (ARTA_HASTE),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
BLADESONG, NOFLAG
),
/*Needs encyc entry*/
A("The Limb of the Black Tree", CLUB, "gnarled tree branch",
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_FIRE, 4, 1), (ARTA_EXPLFIREX),
PROPS(), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Hellfire", CROSSBOW, (const char *)0,
3000L, GREEN_STEEL, MZ_DEFAULT, 30,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, NOFLAG,
NO_MONS(),
ATTK(AD_FIRE, 4, 1), (ARTA_EXPLFIREX),
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Lash of the Cold Waste", BULLWHIP, (const char *)0,
3000L, MINERAL, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_COLD, 4, 1), (ARTA_EXPLCOLDX),
PROPS(SLEEP_RES), NOFLAG,
PROPS(COLD_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Ramiel's ranged attack is far more useful than the lash and the limb*/
/*So it's your job to use it right!*/
A("Ramiel", PARTISAN, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_ELEC, 4, 1), (ARTA_EXPLELECX),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Player gets a second weapon attack after XL15 with this */
A("Quicksilver", FLAIL, (const char *)0,
1200L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 4, 8), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
FAST, NOFLAG
),
/*Needs encyc entry*/
/* slotless displacement makes this quite good even after you've found a better weapon */
A("Sky Render", KATANA, "silver-and-black-iron %s",
1200L, IRON, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 10, 10), ARTA_SILVER,
PROPS(), NOFLAG,
PROPS(DISPLACED), NOFLAG,
NOINVOKE, NOFLAG
),
/* Crystal sword whose use comes with a price of your sanity */
A("Callandor", CRYSTAL_SWORD, (const char *)0,
6660L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT, // there's an opportunity for a sick name here too
A_LAWFUL, NON_PM, NON_PM, TIER_F, (ARTG_GIFT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_SPDAM, ENERGY_REGENERATION, SPELLBOOST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Unstoppable", CROSSBOW, (const char *)0,
3000L, MITHRIL, MZ_DEFAULT, 15,
A_NEUTRAL, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
ATTK(AD_PHYS, 12, 8), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Yoichi no yumi", YUMI, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 20, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_AMMO, NOFLAG
),
/*Needs encyc entry*/
/* all arrows fired from it are treated as poisoned (or filthed for a short period after invoking) */
A("Plague", BOW, (const char *)0,
4000L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_DRST, 5, 7), NOFLAG,
PROPS(POISON_RES, SICK_RES), NOFLAG,
PROPS(), NOFLAG,
FILTH_ARROWS, NOFLAG
),
/* all arrows fired from it return to your inventory 5 turns later */
A("Epoch's Curve", BOW, "white ash longbow",
4000L, WOOD, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_B, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 5, 1), NOFLAG,
PROPS(TELEPORT_CONTROL), NOFLAG,
PROPS(), NOFLAG,
TELEPORT_SHOES, NOFLAG
),
/*Needs encyc entry*/
/* die size set to 1d8 in weapon.c */
A("The Fluorite Octahedron", BLUE_FLUORITE, "glowing cobalt eight-sided die",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (NOFLAG),
NO_MONS(),
NO_ATTK(), (ARTA_DLUCK|ARTA_DEXPL), /* EXTREMELY potent combination of lucky-exploding dice */
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*//////////Artifact Armors//////////*/
/*Needs encyc entry*/
A("The Tie-Dye Shirt of Shambhala", T_SHIRT, "flamboyantly colorful %s",
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), (ARTP_LIGHTEN|ARTP_WCATRIB),
PROPS(), NOFLAG,
ENLIGHTENING, (ARTI_MANDALA|ARTI_PLUSSEV)
),
/*double robe effect*/
/*martial arts attacks use exploding dice and get extra damage*/
A("The Grandmaster's Robe", ROBE, (const char *)0,
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Cloak of the Unheld One", OILSKIN_CLOAK, (const char *)0,
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, FREE_ACTION), NOFLAG,
PROPS(SLEEP_RES), NOFLAG,
TELEPORT_SHOES, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Beastmaster's Duster", JACKET, (const char *)0,
9000L, DRAGON_HIDE, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_F, (ARTG_INHER),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
PETMASTER, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("Soulmirror", PLATE_MAIL, (const char *)0,
9000L, MITHRIL, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(DRAIN_RES, REFLECTING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* wearer gets a 1d4 poison sting, upgradeable by earning XP */
A("The Scorpion Carapace", SCALE_MAIL, (const char *)0,
3000L, CHITIN, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, ARTG_INHER,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(POISON_RES), NOFLAG,
PROPS(), NOFLAG,
SCORPION_UPGRADES, (ARTI_PLUSSEV)
),
A("Mirrorbright", ROUNDSHIELD, (const char *)0,
4000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REFLECTING, HALLUC_RES), NOFLAG,
PROPS(), NOFLAG,
CONFLICT, (ARTI_PLUSSEV)
),
/*Perseus's shield, needs encyc entry*/
A("Aegis", ROUNDSHIELD, "gorgon-emblemed %s",
4000L, LEATHER, MZ_DEFAULT, WT_SPECIAL,
A_LAWFUL, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REFLECTING, HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
AEGIS, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Shield of the All-Seeing", ORCISH_SHIELD, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_ORC, TIER_D, NOFLAG,
MONS(vsMA(MA_ELF | MA_MINION)),
NO_ATTK(), NOFLAG,
PROPS(SEARCHING, FIRE_RES, SEE_INVIS), (ARTP_SEEK),
PROPS(WARN_OF_MON), NOFLAG,
ALLSIGHT, (ARTI_PLUSSEV) /* needs message for invoke */
),
/*Needs encyc entry*/
A("The Shield of Yggdrasil", ELVEN_SHIELD, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_ELF, TIER_F, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(POISON_RES, REGENERATION), NOFLAG,
PROPS(), NOFLAG,
HEALING, (ARTI_PLUSSEV)
),
/* grants 25 STR as gauntlets of power */
/* heals you when your hp would be depleted at the cost of pw */
A("The Golden Knight", BUCKLER, (const char *)0,
3000L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_B, (NOFLAG),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
QUAKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("Whisperfeet", SPEED_BOOTS, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(STEALTH), NOFLAG,
PROPS(), NOFLAG,
INVIS, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("Seven League Boots", JUMPING_BOOTS, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FAST), NOFLAG,
PROPS(), NOFLAG,
SEVEN_LEAGUE_STEP, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("Water Flowers", WATER_WALKING_BOOTS, "silver-flowered %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, NOFLAG,
NO_MONS(),
NO_ATTK(), (ARTA_SILVER),
PROPS(DISPLACED), NOFLAG,
PROPS(), NOFLAG,
TELEPORT_SHOES, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/* freezes water/lava underfoot */
A("Frost Treads", WATER_WALKING_BOOTS,(const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, NOFLAG,
NO_MONS(),
ATTK(AD_COLD, 1, 8), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("Hammerfeet", KICKING_BOOTS, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_GIFT|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), (ARTA_KNOCKBACKX),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/* has a chance to make a bonus AT_HUGS attack on targets when hitting */
/* by extension, protects you from being grabbed */
A("The Grappler's Grasp", GAUNTLETS_OF_POWER, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 6), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("The Shield of the Resolute Heart", GAUNTLETS_OF_DEXTERITY, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
BLESS, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/*It is quite deliberate that these cause a spellcasting penalty */
A("The Gauntlets of Spell Power", GAUNTLETS_OF_POWER, "silver-runed %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, NOFLAG,
NO_MONS(),
NO_ATTK(), (ARTA_SILVER),
PROPS(HALF_SPDAM, SPELLBOOST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* grants 25 DEX while worn */
/* potentially massive unarmed damage multiplier */
A("Premium Heart", GAUNTLETS_OF_POWER, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("Godhands", GAUNTLETS_OF_POWER, (const char *)0,
7777L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_PHYS, 20, 10), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("The Wrappings of the Sacred Fist", HAND_WRAPS, "prayer-warded wraps",
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_GIFT),
NO_MONS(),
ATTK(AD_HOLY, 8, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
FAST_TURNING, (ARTI_PLUSSEV)
),
/* permanently polymorphs you into a death knight when you die -- does not work for monsters */
A("The Helm of Undeath", WAR_HAT, (const char *)0,
2500L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
ATTK(AD_DRLI, 1, 1), (ARTA_DRAIN),
PROPS(DRAIN_RES, LIFESAVED), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* lets the wearer cast Lightning Storm */
A("Stormhelm", HELM_OF_BRILLIANCE, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
ATTK(AD_ELEC, 1, 0), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(SHOCK_RES), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* non-wizards wearing it get reduced-hunger casting (with a -4 INT penalty) */
A("Apotheosis Veil", CRYSTAL_HELM, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(SEE_INVIS, DRAIN_RES, EXTRAMISSION), NOFLAG,
PROPS(), NOFLAG,
ENLIGHTENING, (ARTI_PLUSSEV)
),
/*
* does not give telepathy. if you have telepathy, turns it to active and boosts doubles range
* if you don't have telepathy, nullifies mind blasts and any psychic damage
* makes monsters within your extrinsic telepathy range treated as if they WERE telepathic (does not include cross-level, only in your range)
*/
A("Enforced Mind", HELM_OF_TELEPATHY, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(BLOCK_CONFUSION), NOFLAG,
PROPS(SLEEP_RES), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/* Doubles gold found in the dungeon when worn. */
/* Also gives +1d6 physical damage to attacks when worn. */
A("Ring of Thror", RIN_GAIN_STRENGTH, /* granite or gold (Note: since gold is the fallback at most one of this or Narya will be gold) */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DWARF, TIER_D, (ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 1, 6), NOFLAG,
PROPS(AGGRAVATE_MONSTER), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Modifier: (charisma-11)/2 (-4 to +7) */
/* Inspires pets: add modifier to pet to-hit and damage, roll modifier and add to pet AC */
/* Pets gain the bold() property (stop fleeing faster) */
/* Applies the modifier to your save vs san loss */
/* Strongly boost fireball and firestorm success rate */
/* Also adds 1d10 fire damage to all attacks (only prints messages for unarmed attacks) */
/* Gives fire res when worn */
A("Narya", RIN_CONFLICT, /* ruby or gold */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_ELF, TIER_A, (ARTG_MAJOR),
NO_MONS(),
ATTK(AD_FIRE, 1, 10), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Modifier: (wisdom-11)/2 (-4 to +7) */
/* Gain (or lose) modifer energy per 10 turns */
/* Applies the modifier to your base AC when not flat footed */
/* Strongly boost divination spell success rate */
/* Also adds 1d20 silver damage to all attacks (only prints messages for unarmed attacks) */
/* Grants monster detection, waterproofing, and water walking when worn */
A("Nenya", RIN_WARNING, /* diamond or silver */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_ELF, TIER_A, (ARTG_MAJOR),
NO_MONS(),
ATTK(AD_STAR, 1, 20), NOFLAG,
PROPS(DETECT_MONSTERS, WATERPROOF, WWALKING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Modifier: (intelligence-11)/2 (-4 to +7) */
/* Gain modifier HP per 10 turns. May worsen your condition if you are already dying due to negative HP regen, but won't cause HP regen to be negative otherwise. */
/* Add modifier to your San regen threshold */
/* Applies modifier to pet regen rate (may kill pets if negative!) */
/* Add modifier to your pet's AC */
/* Strongly boost healing spell success rate */
/* Also adds 1d20 study to all attacks */
/* Grants shock res, warning, stealth, and magical breathing when worn */
A("Vilya", RIN_AGGRAVATE_MONSTER, /* sapphire or brass */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_ELF, TIER_A, (ARTG_MAJOR),
NO_MONS(),
ATTK(AD_STDY, 1, 20), NOFLAG,
PROPS(SHOCK_RES, WARN_OF_MON, STEALTH, MAGICAL_BREATHING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Modifier: (wisdom-11)/2 (-4 to +7) */
/* Applies modifier to pet DR */
/* Level modifier: (wisdom + charisma - 18)/4 (-3 to +8) plus beast mastery (0 to 5, doubled by clarent) */
/* Applies level modifier to pet max level */
/* Halves pet special attack timeout */
/* Strongly boost enchantment spell success rate */
/* Also adds 1d8 turn sleep attack to all attacks (only prints messages for unarmed attacks) */
/* Since it always has Lolth's holy symbol, also adds silver damage when used unarmed without gloves */
/* Grants teleportation, teleport control, and searching when worn */
A("Lomya", RIN_PROTECTION_FROM_SHAPE_CHAN,/* black signet */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DROW, TIER_A, (ARTG_MAJOR),
NO_MONS(),
ATTK(AD_SLEE,1,8), NOFLAG,
PROPS(TELEPORT, TELEPORT_CONTROL, SEARCHING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Hellrider's Saddle", SADDLE, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, REFLECTING), NOFLAG,
PROPS(), NOFLAG,
INVIS, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Wallet of Perseus", BAG_OF_HOLDING, (const char *)0,
10000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*
* The artifacts for the quest dungeon, all self-willed.
*/
/*//////////Law Quest Artifacts//////////*/
A("The Rod of Seven Parts", SPEAR, (const char *)0,
7777L, PLATINUM, MZ_DEFAULT, 25 /*wt spear*/,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_INHER),
NO_MONS(),
ATTK(AD_PHYS, 7, 20), (ARTA_HATES|ARTA_CROSSA),
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
SEVENFOLD, NOFLAG
),
A("The Field Marshal's Baton", MACE, (const char *)0,
5000L, MT_DEFAULT, MZ_SMALL, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
MONS(vsMG(MG_MERC)),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
CANNONADE, NOFLAG
),
/*//////////Chaos Quest Artifacts//////////*/
/*Needs encyc entry*/
/* single-use 1-hit-kill when thrown */
A("Houchou", SPOON, (const char *)0,
50000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOWISH), /* is allowed to be gifted and randomly generate */
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*does not protect against lycathropy*/
A("Werebuster", LONG_SWORD, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
MONS(vsMA(MA_WERE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_SOCKETED)
),
A("Sasuke's Blade", KATANA, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 3, 8), (ARTA_HATES|ARTA_CROSSA),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_SOCKETED)
),
/*Needs encyc entry*/
A("Masamune", TSURUGI, (const char *)0,
7500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 10, 20), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_SOCKETED)
),
/*from Final Fantasy*/
/*The crystals are generated together. The Black Crystal "counts", and the others don't.*/
A("The Black Crystal", CRYSTAL_BALL, (const char *)0,
100L, MT_DEFAULT, MZ_DEFAULT, 30,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), (ARTA_HATES|ARTA_CROSSA),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, WARNING, BLACK_CRYSTAL), NOFLAG,
SHADOW_FLARE, NOFLAG
),
A("The Water Crystal", CRYSTAL_BALL, (const char *)0,
100L, MT_DEFAULT, MZ_DEFAULT, 40,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(COLD_RES, WATER_CRYSTAL), NOFLAG,
BLIZAGA, NOFLAG
),
A("The Fire Crystal", CRYSTAL_BALL, (const char *)0,
100L, MT_DEFAULT, MZ_DEFAULT, 10,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(FIRE_RES, FIRE_CRYSTAL), NOFLAG,
FIRAGA, NOFLAG
),
A("The Earth Crystal", CRYSTAL_BALL, (const char *)0,
100L, MT_DEFAULT, MZ_DEFAULT, 100,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(HALF_PHDAM, EARTH_CRYSTAL), NOFLAG,
QUAKE, NOFLAG
),
A("The Air Crystal", CRYSTAL_BALL, (const char *)0,
100L, MT_DEFAULT, MZ_DEFAULT, 20,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(SHOCK_RES, AIR_CRYSTAL), NOFLAG,
THUNDAGA, NOFLAG
),
/*Needs encyc entry*/
A("Nighthorn", UNICORN_HORN, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_FIRE, 12, 24), (ARTA_EXPLFIREX),
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
LEVITATION, (ARTI_FEAR|ARTI_LUCK) /* only fears vs non-chaotic */
),
/*Needs encyc entry*/
/* blocks Aggravate monster while worn */
A("The Mantle of Wrath", ORCISH_CLOAK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ORC, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ACID_RES, HALF_SPDAM), NOFLAG,
PROPS(FIRE_RES, AGGRAVATE_MONSTER), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Heart of Shadow", BATTLE_AXE, "black-flamed %s",
6660L, OBSIDIAN_MT, MZ_HUGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_FIRE, 20, 10), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
INVOKE_DARK, NOFLAG
),
/*Needs encyc entry*/
/*Actually an iron ring (or twisted, if iron is hunger)*/
A("The Shard from Morgoth's Crown", RIN_ADORNMENT, "twisted band of jagged iron",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_HLUH, 7, 9), NOFLAG,
PROPS(SHOCK_RES), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
MORGOTH, NOFLAG
),
/* The Alignment Keys. Must be grouped together. Some code in lock.c, artifact.h, and invent.c depends on the order. */
#define ALIGNMENT_KEY(name, alignment) \
A((name), SKELETON_KEY, (const char *)0, \
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT, \
(alignment), NON_PM, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT), \
NO_MONS(), \
NO_ATTK(), NOFLAG, \
PROPS(), NOFLAG, \
PROPS(), NOFLAG, \
NOINVOKE, NOFLAG \
)
ALIGNMENT_KEY("The First Key of Law", A_LAWFUL),
ALIGNMENT_KEY("The Second Key of Law", A_LAWFUL),
ALIGNMENT_KEY("The Third Key of Law", A_LAWFUL),
ALIGNMENT_KEY("The First Key of Chaos", A_CHAOTIC),
ALIGNMENT_KEY("The Second Key of Chaos", A_CHAOTIC),
ALIGNMENT_KEY("The Third Key of Chaos", A_CHAOTIC),
ALIGNMENT_KEY("The First Key of Neutrality", A_NEUTRAL),
ALIGNMENT_KEY("The Second Key of Neutrality", A_NEUTRAL),
ALIGNMENT_KEY("The Third Key of Neutrality", A_NEUTRAL),
#undef ALIGNMENT_KEY
/*//////////Neutral Quest Artifacts//////////*/
A("Infinity's Mirrored Arc", DOUBLE_LIGHTSABER, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REFLECTING), NOFLAG,
PROPS(), NOFLAG,
ALTMODE, NOFLAG
),
A("The Staff of Twelve Mirrors", KHAKKHARA, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 5, 6), NOFLAG,
PROPS(REFLECTING, DISPLACED), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Mirrored Mask", MASK, (const char *)0,
3000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REFLECTING, HALF_SPDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* reflects projectiles and counterattacks, and doubles your multishot when carried in swapwep or wielded */
A("The Sansara Mirror", MIRRORBLADE, (const char *)0,
3000L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 8, 8), NOFLAG,
PROPS(REFLECTING, HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Spell-warded Wrappings of Nitocris", PRAYER_WARDED_WRAPPING, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(NULLMAGIC), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*from the works of HP Lovecraft*/
A("The Hand-Mirror of Cthylla", MIRROR, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, SEARCHING, POLYMORPH_CONTROL, TELEPORT_CONTROL), NOFLAG,
NOINVOKE, NOFLAG
),
/*from the works of HP Lovecraft*/
A("The Silver Key", UNIVERSAL_KEY, "strangely figured %s",
5000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ENERGY_REGENERATION, POLYMORPH_CONTROL, TELEPORT_CONTROL), NOFLAG,
CREATE_PORTAL, NOFLAG
),
A("The Cage Key", SKELETON_KEY, (const char *)0,
5000L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(TELEPORT_CONTROL), NOFLAG,
CREATE_PORTAL, NOFLAG
),
/*//////////Artifact Books///////////*/
#define ARTIFACT_BOOK(name, invoke) \
A((name), SPE_SECRETS, (const char *)0, \
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT, \
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT), \
NO_MONS(), \
NO_ATTK(), NOFLAG, \
PROPS(), NOFLAG, \
PROPS(), NOFLAG, \
(invoke), NOFLAG \
)
/*from the works of HP Lovecraft*/
ARTIFACT_BOOK("The Necronomicon", NECRONOMICON),
/*Needs encyc entry*/
ARTIFACT_BOOK("The Book of Lost Names", SPIRITNAMES),
/*Needs encyc entry*/
ARTIFACT_BOOK("The Book of Infinite Spells", INFINITESPELLS),
#undef ARTIFACT_BOOK
/*//////////Role-specific Crowning Artifacts//////////*/
/* Clarent patch (Greyknight): Note that Clarent's SPFX2_DIG gives it another +2 to hit against thick-skinned
monsters, as well as against wall-passers. Another special effect of Clarent
is that it can be pulled out of a wall it is stuck in (by #untrapping towards
it) if you are devoutly lawful. */
/*Clarent has been modified to make it the Knight crowning-gift*/
A("Clarent", LONG_SWORD, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
MONS(vsMB(MB_THICK_HIDE)),
ATTK(AD_PHYS, 10, 20), (ARTA_HATES),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LEADERSHIP, (ARTI_DIG)
),
/* sdice are a copy of ldice, ocn +=1 */
A("The Dark Claymore", TWO_HANDED_SWORD, (const char *)0,
4000L, OBSIDIAN_MT, MZ_LARGE, WT_DEFAULT,
A_CHAOTIC, PM_KNIGHT, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_DARK, 1, 6), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LEADERSHIP, NOFLAG
),
/*Needs encyc entry*/
A("Reaver", SCIMITAR, (const char *)0,
6000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_PIRATE, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 8), (ARTA_STEAL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
THEFT_TYPE, NOFLAG
),
/*Needs encyc entry*/
/* can be read to learn cone of cold */
A("The Bow of Skadi", BOW, "rune-carved %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_VALKYRIE, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_COLD, 1, 24), (ARTA_EXPLCOLDX),
PROPS(), NOFLAG,
PROPS(COLD_RES), NOFLAG,
NOINVOKE, NOFLAG
),
A("Gungnir", ATGEIR, "rune-carved %s",
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_VALKYRIE, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 20, 12), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* actually a gold circlet */
/*Also causes pets to always follow you when worn*/
A("The Crown of the Saint King", HELMET, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LEADERSHIP, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/* actually a visored helmet */
/*Also causes pets to always follow you when worn*/
A("The Helm of the Dark Lord", HELMET, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LEADERSHIP, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/* permanently filthed */
A("Sunbeam", GOLDEN_ARROW, (const char *)0,
1000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_RANGER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 10, 0), (ARTA_POIS|ARTA_BRIGHT),
PROPS(), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* permanently drugged */
A("Moonbeam", SILVER_ARROW, (const char *)0,
1000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_RANGER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 10, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Veil of Latona", CLOAK_OF_INVISIBILITY, (const char *)0,
1000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_RANGER, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, REFLECTING), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, NOFLAG
),
A("Hermes's Sandals", FLYING_BOOTS, "pair of winged sandals",
4000L, GOLD, MZ_DEFAULT, WT_SPECIAL,
A_NEUTRAL, PM_HEALER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FAST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("Poseidon's Trident", TRIDENT, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_HEALER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_POOL, NOFLAG
),
A("Feng Huo Lun", WIND_AND_FIRE_WHEELS, "flaming %s",
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_MONK, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_FIRE, 1, 0), NOFLAG,
PROPS(FAST, FLYING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("Jin Gang Zuo", BANDS, "hoop",
4500L, GEMSTONE, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_MONK, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(FIRE_RES, WATERPROOF), NOFLAG,
SNARE_WEAPONS, NOFLAG
),
A("Ruyi Jingu Bang", QUARTERSTAFF, "golden-hooped %s",
4500L, IRON, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_MONK, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CHANGE_SIZE, NOFLAG
),
A("The Sickle of Thunderblasts", SICKLE, (const char *)0,
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_MADMAN, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), ARTA_SONICX|ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The War-helm of the Dreaming", FACELESS_HELM, "bird-like faceless helm",
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_MADMAN, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(MAGICAL_BREATHING, WALKING_NIGHTMARE), NOFLAG,
PROPS(), NOFLAG,
ENERGY_BOOST, NOFLAG
),
A("The Spear of Peace", SPEAR, (const char *)0,
1500L, WOOD, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_MADMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(CLEAR_THOUGHTS, BLOCK_CONFUSION, HALLUC_RES, HALF_PHDAM, HALF_SPDAM), NOFLAG,
PROPS(), NOFLAG,
INVULNERABILITY, NOFLAG
),
A("The Ibite arm", CLUB, "flabby green arm",
4500L, FLESH, MZ_GIGANTIC, WT_DEFAULT,
A_NONE, PM_MADMAN, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_ACID, 20, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
IBITE_ARM, NOFLAG
),
A("Star-emperor's Ring", RIN_WISHES, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_MADMAN, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_STAR, 20, 20), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
IMPERIAL_RING, NOFLAG
),
A("The Eye of the Oracle", EYEBALL, (const char *)0,
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, HALF_SPDAM), NOFLAG,
ORACLE, NOFLAG
),
/*Arc redesign by Riker*/
A("The Macuahuitl of Quetzalcoatl", MACUAHUITL, (const char *)0,
3000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), (ARTA_VORPAL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Arc redesign by Riker*/
A("The Mask of Tlaloc", MASK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(WATERPROOF), NOFLAG,
PROPS(HALF_SPDAM, ANTIMAGIC, COLD_RES, SHOCK_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Arc redesign by Riker*/
A("Ehecailacocozcatl", AMULET_OF_MAGICAL_BREATHING, (const char *)0,
3000L, SHELL_MAT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ENERGY_REGENERATION, REFLECTING), NOFLAG,
PROPS(), NOFLAG,
WIND_PETS, NOFLAG
),
/*Arc redesign by Riker*/
A("Amhimitl", JAVELIN, (const char *)0,
3000L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_ARCHEOLOGIST, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_FIRE, 5, 8), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Arc redesign by Riker*/
/* can "sacrifice" monsters it kills, reducing prayer timeout */
A("The Tecpatl of Huhetotl", TECPATL, (const char *)0,
3000L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_ARCHEOLOGIST, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 5, 8), NOFLAG,
PROPS(), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*//////////Role-specific Quest Artifacts//////////*/
/*
// NOTE: uses old artifact structure
A("The Orb of Detection", CRYSTAL_BALL,
(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0,
NO_ATTK(), NO_DFNS, CARY(AD_MAGM),
INVIS, A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, 2500L ),
*/
A("Smoking Mirror", SPEAR, (const char *)0,
3000L, OBSIDIAN_MT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_SALAMANDER, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_FIRE,5,0), NOFLAG,
PROPS(REFLECTING), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
SMOKE_MIRROR, NOFLAG
),
/*From archeologist patch*/
A("Itlachiayaque", ROUNDSHIELD, (const char *)0,
3000L, OBSIDIAN_MT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FIRE_RES, REFLECTING), NOFLAG,
PROPS(TELEPAT, HALF_SPDAM, ANTIMAGIC), NOFLAG,
SMOKE_CLOUD, NOFLAG
),
/*Needs encyc entry*/
A("The Annulus", CHAKRAM, "intricately-featured %s",
3000L, SILVER, MZ_DEFAULT, WT_SPECIAL,
A_CHAOTIC, PM_ANACHRONONAUT, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 1), ARTA_RETURNING, /*Actually Phys(5,0) if not a lightsaber*/
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, HALF_SPDAM), NOFLAG,
ANNUL, NOFLAG
),
A("The Heart of Ahriman", RUBY, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_BARBARIAN, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 10, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, REFLECTING, HALF_SPDAM, FIRE_RES, DRAIN_RES, POISON_RES), NOFLAG,
ARTI_REMOVE_CURSE, NOFLAG
),
A("The Lyre of Orpheus", MAGIC_HARP, (const char *)0,
5000L, GOLD, MZ_DEFAULT, WT_SPECIAL,
A_NEUTRAL, PM_BARD, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
TAMING, (ARTI_SPEAK)
),
A("The Sceptre of Might", SPEAR, (const char *)0,
2500L, BONE, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_CAVEMAN, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), (ARTA_HATES|ARTA_CROSSA|ARTA_KNOCKBACK),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
CONFLICT, NOFLAG
),
// old-style artifact block
// A("The Iron Ball of Liberation", HEAVY_IRON_BALL, 0, 0,
// (SPFX_NOGEN|SPFX_RESTR|SPFX_LUCK|SPFX_INTEL),
// (SPFX_SEARCH|SPFX_SEEK|SPFX_WARN), 0,
// NO_ATTK(), NO_DFNS, CARY(AD_MAGM),
// PHASING, A_CHAOTIC, PM_CONVICT, NON_PM, 5000L,
// SPFX2_STLTH,0,0), /*Note: it had caried stealth before*/
A("The Iron Ball of Levitation", HEAVY_IRON_BALL, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_CONVICT, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 10), (ARTA_HATES|ARTA_CROSSA),
PROPS(STEALTH), NOFLAG,
PROPS(WARNING, DRAIN_RES), NOFLAG,
LEVITATION, (ARTI_LUCK)
),
A("The Iron Spoon of Liberation", SPOON, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_CONVICT, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(STEALTH), NOFLAG,
PROPS(SEARCHING, FREE_ACTION), (ARTP_SEEK),
PHASING, (ARTI_DIG|ARTI_ENGRAVE|ARTI_LUCK)
),
/*Creates throwing stars. Makes throwing stars count as silver if wielded */
/*Also can be (a)pplied as a magic flute. */
/* needs encyc entry */
A("Silver Starlight", RAPIER, (const char *)0,
5000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_INHER|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 4, 4), (ARTA_PHASING),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_AMMO, NOFLAG
),
/* needs encyc entry */
/* shoots many crossbow bolts at a time (with reduced precision damage) */
A("Wrathful Spider", DROVEN_CROSSBOW, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_DROW, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(STEALTH), NOFLAG,
PROPS(), NOFLAG,
CREATE_AMMO, NOFLAG
),
/* needs encyc entry */
/* hits many times in one swing, with special effects */
/* helps spellcasting */
/* protects vs curses while wielded */
A("The Tentacle Rod", FLAIL, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 7, 1), (ARTA_TENTROD),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* needs encyc entry */
A("The Crescent Blade", SABER, (const char *)0,
5000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_FIRE, 4, 0), (ARTA_PHASING|ARTA_VORPAL),
PROPS(), NOFLAG,
PROPS(REFLECTING), NOFLAG,
NOINVOKE, NOFLAG
),
/* needs encyc entry */
A("The Darkweaver's Cloak", DROVEN_CLOAK, (const char *)0,
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* needs encyc entry */
/*Adds sleep poison to unarmed attacks*/
A("Spidersilk", DROVEN_CHAIN_MAIL, (const char *)0,
5000L, CLOTH, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(SPELLBOOST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* needs encyc entry */
A("The Webweaver's Crook", FAUCHARD, (const char *)0,
5000L, CHITIN, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), (ARTA_POIS),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
NOINVOKE, NOFLAG
),
/* needs encyc entry */
/* Hedrow crowning gift, chaotic or neutral */
A("Lolth's Fang", DROVEN_SHORT_SWORD, "silver-edged %s",
8000L, CHITIN, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DROW, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_ACID, 10, 10), (ARTA_POIS|ARTA_SILVER),
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* needs encyc entry */
/* Drow crowning gift, chaotic */
A("The Web of Lolth", ELVEN_TOGA, "silver-starred %s",
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
MONS(vsMA(MA_ELF|MA_MINION|MA_DEMON)),
NO_ATTK(), (ARTA_SILVER),
PROPS(WARN_OF_MON, DRAIN_RES, SPELLBOOST), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
ENERGY_BOOST, (ARTI_PLUSSEV)
),
/* needs encyc entry */
/* Drow crowning gift, neutral */
A("The Claws of the Revenancer", GAUNTLETS_OF_DEXTERITY, (const char *)0,
8000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, PM_DROW, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_DRLI, 1, 1), (ARTA_DRAIN),
PROPS(ENERGY_REGENERATION, DRAIN_RES, COLD_RES, REGENERATION, FIXED_ABIL, POISON_RES, SEE_INVIS), NOFLAG,
PROPS(), NOFLAG,
RAISE_UNDEAD, NOFLAG
),
/* needs encyc entry */
/* Drow noble crowning gift, lawful */
A("Liecleaver", DROVEN_CROSSBOW, (const char *)0,
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(SEARCHING, DRAIN_RES), (ARTP_SEEK),
PROPS(HALLUC_RES), NOFLAG,
CREATE_AMMO, NOFLAG
),
/* needs encyc entry */
/* Hedrow noble crowning gift, Chaotic */
A("The Ruinous Descent of Stars", MORNING_STAR, "silver-spiked %s",
8000L, METAL, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), (ARTA_SILVER),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
FALLING_STARS, NOFLAG
),
/* needs encyc entry */
/* Drow noble crowning gift, Lawful */
/*returns to your hand when thrown; +1 multishot for drow & elves */
A("Sickle Moon", ELVEN_SICKLE, (const char *)0,
4000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOWISH|ARTG_FXALGN), /* may randomly generate */
NO_MONS(),
ATTK(AD_PHYS, 1, 0), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/** Indwelling of the Black Web entity, lawful hedrow crowning gift */
/* needs encyc entry */
/* Elf crowning gift, Lawful */
A("Arcor Kerym", CRYSTAL_SWORD, "gold-runed craggy and pitted %s",
8000L, IRON, MZ_DEFAULT, 40,
A_LAWFUL, NON_PM, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 20, 10), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
HEALING, (ARTI_LIGHT)
),
/* needs encyc entry */
/* Elf crowning gift, Neutral */
A("Aryfaern Kerym", RUNESWORD, "sword of crimson-edged darkness",
8000L, MINERAL, MZ_DEFAULT, 4,
A_NEUTRAL, NON_PM, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN|ARTA_PHASING),
NO_MONS(),
ATTK(AD_ELEC, 5, 10), NOFLAG,
PROPS(SHOCK_RES, SPELLBOOST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LIGHT)
),
/* needs encyc entry */
/* Elf crowning gift, Chaotic */
A("Aryvelahr Kerym", ELVEN_BROADSWORD, "blue-burning %s",
8000L, SILVER, MZ_DEFAULT, 20,
A_CHAOTIC, NON_PM, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), (ARTA_SILVER),
PROPS(REFLECTING, DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LIGHT)
),
A("The Staff of Aesculapius", QUARTERSTAFF, "serpent-entwined staff",
5000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_HEALER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_DRLI, 1, 0), (ARTA_SILVER|ARTA_DRAIN), /*silver is associated with the healer's art*/
PROPS(REGENERATION, DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
HEALING, NOFLAG
),
A("The Magic Mirror of Merlin", MIRROR, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, TELEPAT, SPELLBOOST), NOFLAG,
NOINVOKE, (ARTI_SPEAK)
),
A("The Eye of the Overworld", SOUL_LENS, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_MONK, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(BLIND_RES, XRAY_VISION, GAZE_RES), (ARTP_FORCESIGHT),
PROPS(ANTIMAGIC), NOFLAG,
ENLIGHTENING, NOFLAG
),
A("Rite of Detestation", SCR_BLANK_PAPER, "water-damaged scroll",
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_MADMAN, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
DETESTATION, NOFLAG
),
A("Idol of Bokrug, the water-lizard", STATUE, "sea-green stone likeness of a water-lizard",
2500L, MINERAL, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_MADMAN, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Star of Hypernotus", AMULET_VERSUS_CURSES, "blue-green star-shaped %s",
2500L, GEMSTONE, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_MADMAN, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(CLEAR_THOUGHTS, BLOCK_CONFUSION), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/* Also has holy and unholy properties */
A("Avenger", LONG_SWORD, "winged long sword",
1000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 1, 7), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*Actually an ornamental cope in game*/
/* Plus double AC bonus */
A("The Mantle of Heaven", CLOAK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(SHOCK_RES, HALF_SPDAM), NOFLAG,
PROPS(COLD_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*Actually an opera cope in game*/
/* Plus double AC bonus */
A("The Vestment of Hell", CLOAK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ACID_RES, HALF_PHDAM), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*Moria dwarf noble first gift */
A("The Armor of Khazad-dum", DWARVISH_MITHRIL_COAT, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, PM_DWARF, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
/*Moria dwarf noble */
/*+5 attk and damage with axes*/
A("The War-mask of Durin", MASK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, PM_DWARF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FIRE_RES, ACID_RES, POISON_RES, HALF_SPDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*Moria dwarf noble crowning gift */
A("Durin's Axe", AXE, "silver-rune-inlaid %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, PM_DWARF, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 10, 10), (ARTA_SILVER),
PROPS(DRAIN_RES, SEARCHING), (ARTP_SEEK),
PROPS(), NOFLAG,
NOINVOKE, (ARTI_DIG)
),
/*Needs encyc entry*/
/*Lonely Mountain dwarf noble first gift */
/* the old elves fought balrogs too. */
A("Glamdring", ELVEN_BROADSWORD, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_KNIGHT, PM_DWARF, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
MONS(vsMA(MA_ORC|MA_DEMON)),
ATTK(AD_PHYS, 10, 10), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Key of Erebor", SKELETON_KEY, (const char *)0,
1500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*Lonely Mountain dwarf noble */
/* has bonus +10 AC */
A("The Armor of Erebor", PLATE_MAIL, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, PM_DWARF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM, ANTIMAGIC, FIRE_RES, COLD_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Arkenstone*/ /*Lonely Mountain dwarf noble crown*/
/*Needs encyc entry*/
/* Drow noble first gift */
A("The Sceptre of Lolth", KHAKKHARA, (const char *)0,
4000L, SILVER, MZ_DEFAULT, WT_SPECIAL,
A_CHAOTIC, PM_NOBLEMAN, PM_DROW, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LORDLY, (ARTI_ENGRAVE)
),
/*Needs encyc entry*/
/* Drow noble quest */
/* Plus double AC bonus */
A("The Web of the Chosen", DROVEN_CLOAK, "silver-dewed %s",
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), (ARTA_SILVER),
PROPS(REFLECTING, HALF_SPDAM, ACID_RES), NOFLAG,
PROPS(SHOCK_RES), NOFLAG,
NOINVOKE, (ARTI_ENGRAVE)
),
/*Needs encyc entry*/
/* Hedrow noble first gift */
A("The Death-Spear of Keptolo", DROVEN_SPEAR, (const char *)0,
4000L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_NOBLEMAN, PM_DROW, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 10, 12), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
DEATH_TCH, (ARTI_ENGRAVE)
),
/*Needs encyc entry*/
/* Herow noble quest */
/* Plus double AC bonus */
A("The Cloak of the Consort", DROVEN_CLOAK, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_NOBLEMAN, PM_DROW, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM, DRAIN_RES), NOFLAG,
PROPS(COLD_RES), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("Esscooahlipboourrr", DOUBLE_SWORD, "tentacle-auraed shackle-entwined %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_HEALER, PM_DROW, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 20, 10), NOFLAG,
PROPS(DRAIN_RES, SEARCHING), (ARTP_SEEK),
PROPS(), NOFLAG,
LOOT_SELF, NOFLAG
),
A("The Robe of Closed Eyes", ROBE, "shut-eye-patterned %s",
4000L, LEATHER, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_HEALER, PM_DROW, TIER_C, (ARTG_NOGEN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(INVIS, GAZE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Red Cords of Ilmater", HAND_WRAPS, "pair of red cords",
1000L, CLOTH, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FREE_ACTION, STONE_RES), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/*Needs encyc entry*/
A("The Crown of the Percipient", HELM_OF_BRILLIANCE, (const char *)0,
1000L, FLESH, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_HEALER, PM_DROW, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(DETECT_MONSTERS, DRAIN_RES, STONE_RES, FIRE_RES, COLD_RES, SHOCK_RES, HALLUC_RES, SLEEP_RES, BLOCK_CONFUSION), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
ENLIGHTENING, NOFLAG
),
/*Needs encyc entry*/
A("Painting Fragment", SCR_BLANK_PAPER, "scroll fragment",
200L, CLOTH, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_NOBLEMAN, PM_HALF_DRAGON, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
QUEST_PORTAL, NOFLAG
),
/*Needs encyc entry*/
A("The Profaned Greatscythe", SCYTHE, (const char *)0,
4000L, MINERAL, MZ_HUGE, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_FIRE, 8, 30), NOFLAG,
PROPS(), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
NOINVOKE, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
/* slowing cold magic offense */
/* scales with STR/2 & DEX & INT for +20 max*/
A("Friede's Scythe", SCYTHE, (const char *)0,
4000L, METAL, MZ_SMALL, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_MAGM, 6, 6), (ARTA_MAGIC|ARTA_PHASING),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
NOINVOKE, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
/* Drains energy/sets special ability cooldowns */
/* scales with STR & DEX & WIS for +24 max*/
A("Yorshka's Spear", SPEAR, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_INHER|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("Dragonhead Shield", STONE_DRAGON_SHIELD, "stone dragon head",
4000L, MINERAL, MZ_HUGE, WT_DEFAULT,
A_LAWFUL, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(COLD_RES, DISINT_RES, STONE_RES), NOFLAG,
PROPS(), NOFLAG,
STONE_DRAGON, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("Crucifix of the Mad King", HALBERD, (const char *)0,
4000L, METAL, MZ_LARGE, WT_DEFAULT,
A_NEUTRAL, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_DARK, 1, 10), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
MAD_KING, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("Ringed Brass Armor", PLATE_MAIL, "molten-ringed brass %s",
4000L, COPPER, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
RINGED_ARMOR, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("Ritual Ringed Spear", SPEAR, "molten-ringed spear",
4000L, OBSIDIAN_MT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
RINGED_SPEAR, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
A("Velka's Rapier", RAPIER, (const char *)0,
4000L, METAL, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_NOBLEMAN, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_MAGM, 20, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSTEN)
),
/*Needs encyc entry*/
/* Doubles dragon attributes when carried */
/* TODO: Invoke to change element? */
A("The Dragon's Heart-Stone", FLINT, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_NOBLEMAN, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Mitre of Holiness", HELM_OF_BRILLIANCE, (const char *)0,
2000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_PRIEST, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
MONS(vsMA(MA_UNDEAD)),
ATTK(AD_HOLY, 5, 0), NOFLAG,
PROPS(WARN_OF_MON, DRAIN_RES), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
ENERGY_BOOST, (ARTI_PLUSSEV)
),
/* protects inventory from curses */
/* polymorphs contained items occasionally */
A("The Treasury of Proteus", CHEST, (const char *)0,
2500L, MT_DEFAULT, MZ_DEFAULT, 50,
A_CHAOTIC, PM_PIRATE, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
ENERGY_BOOST, (ARTI_LUCK)
),
A("The Longbow of Diana", BOW, (const char *)0,
4000L, SILVER, MZ_DEFAULT, 0,
A_CHAOTIC, PM_RANGER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 6), NOFLAG,
PROPS(REFLECTING), NOFLAG,
PROPS(TELEPAT), NOFLAG,
CREATE_AMMO, NOFLAG
),
A("The Rogue Gear-spirits", CROSSBOW, (const char *)0,
4000L, MT_DEFAULT, MZ_SMALL, WT_DEFAULT,
A_NEUTRAL, PM_RANGER, PM_GNOME, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(SEARCHING), (ARTP_SEEK),
PROPS(FIRE_RES, WARNING, TELEPAT), NOFLAG,
UNTRAP, (ARTI_DIG|ARTI_SPEAK)
),
/*Needs encyc entry*/
/* yes, causes spell penalties*/
A("The Steel Scales of Kurtulmak", GRAY_DRAGON_SCALES, (const char *)0,
5000L, IRON, MZ_DEFAULT, 300,
A_LAWFUL, NON_PM, PM_KOBOLD, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FREE_ACTION, FIRE_RES, REFLECTING, HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Glitterstone", AMBER, (const char *)0,
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, NON_PM, PM_GNOME, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ENERGY_REGENERATION), NOFLAG,
CHARGE_OBJ, (ARTI_PERMALIGHT)
),
A("Great Claws of Urdlen", GAUNTLETS_OF_POWER, "clawed %s",
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_INHER|ARTG_NOWISH|ARTG_MAJOR|ARTG_FXALGN),
NO_MONS(),
ATTK(AD_PHYS, 10, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
QUAKE, (ARTI_PLUSSEV|ARTI_DIG)
),
/*Needs encyc entry*/
A("The Moonbow of Sehanine", ELVEN_BOW, (const char *)0,
4000L, SILVER, MZ_DEFAULT, 0,
A_CHAOTIC, PM_RANGER, PM_ELF, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 6), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_AMMO, NOFLAG
),
/*Needs encyc entry*/
A("The Spellsword of Corellon", HIGH_ELVEN_WARSWORD, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ELF, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 1, 10), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Warhammer of Vandria", WAR_HAMMER, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, PM_ELF, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Shield of Saint Cuthbert", SHIELD_OF_REFLECTION,(const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_SPDAM, HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
A("The Palantir of Westernesse", CRYSTAL_BALL, (const char *)0,
8000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(WARNING, TELEPAT, REFLECTING, XRAY_VISION), NOFLAG,
TAMING, NOFLAG
),
/*Needs encyc entry*/
A("Belthronding", ELVEN_BOW, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_ELF, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 5, 6), NOFLAG,
PROPS(STEALTH), NOFLAG,
PROPS(DISPLACED), NOFLAG,
CREATE_AMMO, NOFLAG
),
/*Needs encyc entry*/
/* Elf noble first gift */
A("The Rod of the Elvish Lords", ELVEN_MACE, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_SPECIAL,
A_CHAOTIC, NON_PM, PM_ELF, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 3, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LORDLY, (ARTI_ENGRAVE)
),
A("The Master Key of Thievery", SKELETON_KEY, (const char *)0,
3500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, PM_ROGUE, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(HALF_PHDAM, TELEPORT_CONTROL, WARNING), NOFLAG,
UNTRAP, (ARTI_SPEAK)
),
A("The Tsurugi of Muramasa", TSURUGI, (const char *)0,
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_SAMURAI, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 2, 0), (ARTA_VORPAL|ARTA_SHATTER),
PROPS(), (ARTP_SEEK),
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LUCK|ARTI_BLOODTHRST)
),
A("The Platinum Yendorian Express Card", CREDIT_CARD, (const char *)0,
7000L, PLATINUM, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_TOURIST, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), (ARTA_SILVER),
PROPS(), NOFLAG,
PROPS(HALF_SPDAM, TELEPAT, ANTIMAGIC), NOFLAG,
CHARGE_OBJ, NOFLAG
),
A("The Orb of Fate", CRYSTAL_BALL, (const char *)0,
3500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_VALKYRIE, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(), NOFLAG,
PROPS(HALF_SPDAM, HALF_PHDAM, WARNING), NOFLAG,
LEV_TELE, (ARTI_LUCK)
),
/*Needs encyc entry*/
/* The Sun of the Gods of the Dead */
A("Sol Valtiva", TWO_HANDED_SWORD, (const char *)0,
4000L, OBSIDIAN_MT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, PM_FIRE_GIANT, TIER_B, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_FIRE, 5, 24), (ARTA_EXPLFIRE|ARTA_BLIND|ARTA_BRIGHT),
PROPS(), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
NOINVOKE, (ARTI_LIGHT)
),
A("The Eye of the Aethiopica", AMULET_OF_ESP, (const char *)0,
4000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NEUTRAL, PM_WIZARD, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(), NOFLAG,
PROPS(ANTIMAGIC, HALF_SPDAM, ENERGY_REGENERATION), NOFLAG,
CREATE_PORTAL, NOFLAG
),
/*//////////Special High-Level Artifacts//////////*/
A("The Hat of the Archmagi", CORNUTHAUM, (const char *)0,
9000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_WIZARD, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(XRAY_VISION, WARNING), NOFLAG,
PROPS(), NOFLAG,
ENERGY_BOOST, (ARTI_SPEAK)
),
/* 22+ Daimyo can name Kusanagi no Tsurugi from a longsword
* (should be a broadsword maybe, but that has been "translated" as a ninja-to).
* only a level 30 (Shogun) samurai or one who is carying the amulet can wield the sword.
*/
A("The Kusanagi no Tsurugi", LONG_SWORD, (const char *)0,
4500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_SAMURAI, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 20, 12), (ARTA_VORPAL),
PROPS(ENERGY_REGENERATION, SEARCHING), NOFLAG,
PROPS(), NOFLAG,
ENERGY_BOOST, (ARTI_LUCK)
),
/*
* Ah, never shall I forget the cry,
* or the shriek that shrieked he,
* As I gnashed my teeth, and from my sheath
* I drew my Snickersnee!
* --Koko, Lord high executioner of Titipu
* (From Sir W.S. Gilbert's "The Mikado")
*/
/* currently nameable by advanced tourists */
/* Tourists and Samurai can twoweapon Snickersnee */
A("Snickersnee", KNIFE, (const char *)0,
1200L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_SAMURAI, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_PHYS, 3, 10), (ARTA_DEXPL|ARTA_VORPAL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*/////////////Special Monster Artifacts//////////////*/
/*//Few of these count, since they are boss treasure//*/
/*////////////////////////////////////////////////////*/
/*Needs encyc entry*/
/*heavier than normal, and causes spell penalties*/
A("The Platinum Dragon Plate", SILVER_DRAGON_SCALE_MAIL, (const char *)0,
9000L, MT_DEFAULT, MZ_DEFAULT, WT_SPECIAL,
A_NONE, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC, FIRE_RES, COLD_RES, DISINT_RES, SHOCK_RES, SLEEP_RES, FREE_ACTION), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry*/
/*heavier than normal */
A("The Chromatic Dragon Scales", BLACK_DRAGON_SCALES, (const char *)0,
9000L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FIRE_RES, COLD_RES, DISINT_RES, SHOCK_RES, POISON_RES, SICK_RES, ACID_RES, STONE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Abominable Veil", CLOAK_OF_DISPLACEMENT, (const char *)0,
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Poplar Punisher", QUARTERSTAFF, "poplar branch",
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 4, 6), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Gillystone", EMERALD, (const char *)0,
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(SWIMMING,MAGICAL_BREATHING), NOFLAG,
NOINVOKE, NOFLAG
),
A("Raggo's Rock", ROCK, (const char *)0,
500L, MT_DEFAULT, MZ_SMALL, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_SPEAK | ARTI_LUCK)
),
A("Kroo's Ring", RIN_POISON_RESISTANCE, (const char *)0,
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FAST), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Eye of Death", EYEBALL, (const char *)0,
500L, MT_DEFAULT, MZ_GIGANTIC, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(HALF_SPDAM, STONE_RES), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Eye of Vecna", EYEBALL, (const char *)0,
500L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_SPDAM), NOFLAG,
PROPS(), NOFLAG,
DEATH_GAZE, NOFLAG
),
A("The Hand of Vecna", SEVERED_HAND, (const char *)0,
700L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(DRAIN_RES), NOFLAG,
PROPS(COLD_RES), NOFLAG,
SUMMON_UNDEAD, NOFLAG
),
/*Spirit weapons*/
A("The Crown of Berith", HELMET, (const char *)0,
9999L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), (NOFLAG),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("The Talisman of Buer", AMULET_OF_LIFE_SAVING, (const char *)0,
9999L, MZ_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REGENERATION, FIXED_ABIL), NOFLAG,
PROPS(), NOFLAG,
HEALING, NOFLAG
),
A("The Dread of Dantalion", TWO_HANDED_SWORD, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 1, 10), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_FEAR)
),
A("The Stone Mask", MASK, (const char *)0,
9999L, MINERAL, MZ_DEFAULT, 10,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(STONE_RES, INVIS, STEALTH), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Eden's Scales", SILVER_DRAGON_SCALES, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CREATE_PORTAL, (ARTI_PLUSSEV)
),
A("Eurynome's Dancing Shoes", SPEED_BOOTS, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(STEALTH, FREE_ACTION), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("Ruinous Strike", PICK_AXE, (const char *)0,
9999L, DRAGON_HIDE, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_FIRE, 1, 0), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
SMOKE_CLOUD, NOFLAG
),
A("Thought", DAGGER, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_DRIN, 2, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Memory", DAGGER, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_DRIN, 2, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Jack's Torch", CLUB, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_FIRE, 4, 8), (ARTA_EXPLFIREX),
PROPS(), NOFLAG,
PROPS(FIRE_RES), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Puppet Wire", GRAPPLING_HOOK, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 4, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("Flickering Outline", CLOAK_OF_DISPLACEMENT, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
SHADOW_FLARE, (ARTI_PLUSSEV)
),
A("The Archivist", QUARTERSTAFF, (const char *)0,
9999L, GEMSTONE, MZ_DEFAULT, 48,
A_NONE, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
RAND_SCROLL, NOFLAG
),
A("Simurgh's Feather", FEATHER, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(SHOCK_RES), NOFLAG,
ARTI_REMOVE_CURSE, (ARTI_PERMALIGHT)
),
A("The Touch of The Void", GAUNTLETS_OF_DEXTERITY, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_DRLI,1,0), (ARTA_DRAIN),
PROPS(DRAIN_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
A("The Plates of The Near Void", CRYSTAL_PLATE_MAIL, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, 125,
A_NONE, NON_PM, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM,MAGICAL_BREATHING), NOFLAG,
PROPS(), NOFLAG,
PHASING, (ARTI_PLUSTEN)
),
A("The Elder Cerebral Fluid", DILITHIUM_CRYSTAL, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ANACHRONOUNBINDER, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_DRIN, 10, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(ENERGY_REGENERATION, HALF_SPDAM), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Illithid Staff", DOUBLE_LIGHTSABER, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, PM_ANACHRONOUNBINDER, NON_PM, TIER_S, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_DRIN, 5, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(ENERGY_REGENERATION, HALF_SPDAM), NOFLAG,
ILLITHID, NOFLAG
),
/*Needs encyc entry, somehow*/
A("Genocide", TWO_HANDED_SWORD, (const char *)0,
9999L, GREEN_STEEL, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_FIRE, 9, 9), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_BLOODTHRST)
),
/*Needs encyc entry */
A("The Rod of Dis", MACE, (const char *)0,
9999L, GREEN_STEEL, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 10, 8), (ARTA_KNOCKBACK),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
TAMING, NOFLAG
),
/*Needs encyc entry */
A("Avarice", SHORT_SWORD, (const char *)0,
9999L, GOLD, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 10, 1), (ARTA_STEAL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
THEFT_TYPE, NOFLAG
),
/*Needs encyc entry */
A("The Fire of Heaven", TRIDENT, (const char *)0,
9999L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_FIRE, 1, 0), (ARTA_EXPLFIREX|ARTA_EXPLELEC),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
/*used to have DRAIN_MEMORIES instead of CONFLICT */
A("The Diadem of Amnesia", DUNCE_CAP, (const char *)0,
9999L, MT_DEFAULT, MZ_HUGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_F, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
CONFLICT, NOFLAG
),
/*Needs encyc entry */
/* has a unique interaction with Nudziarth */
A("Shadowlock", RAPIER, (const char *)0,
9999L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 20, 0), (ARTA_VORPAL|ARTA_PHASING),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Thunder's Voice", DAGGER, (const char *)0,
3333L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_ELEC, 6, 6), (ARTA_EXPLELEC),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Serpent's Tooth", ATHAME, (const char *)0,
3333L, GREEN_STEEL, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), (ARTA_POIS),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Unblemished Soul", UNICORN_HORN, "silver-spattered %s",
3333L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), (ARTA_SILVER),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LUCK)
),
/*Needs encyc entry */
A("Ramithaine", LONG_SWORD, (const char *)0,
3333L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 6, 1), (ARTA_VORPAL),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("The Wrath of Heaven", LONG_SWORD, (const char *)0,
9999L, SILVER, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_ELEC, 1, 0), (ARTA_EXPLFIRE|ARTA_EXPLELECX),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
/* Used to have SLAY_LIVING */
A("The All-seeing Eye of the Fly", HELM_OF_TELEPATHY, (const char *)0,
9999L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(DETECT_MONSTERS), NOFLAG,
PROPS(), NOFLAG,
SHADOW_FLARE, NOFLAG
),
/*Needs encyc entry */
A("Cold Soul", RANSEUR, (const char *)0,
9999L, GREEN_STEEL, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), (ARTA_EXPLFIRE|ARTA_EXPLELEC|ARTA_EXPLCOLD),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("The Sceptre of the Frozen Floor of Hell", QUARTERSTAFF, (const char *)0,
9999L, METAL, MZ_LARGE, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_COLD, 1, 0), (ARTA_EXPLCOLDX),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
BLIZAGA, NOFLAG
),
/*Needs encyc entry */
A("Caress", BULLWHIP, (const char *)0,
9999L, GOLD, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_ELEC, 1, 20), NOFLAG,
PROPS(SHOCK_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
/*Weapon of Lixer, Prince of Hell, from Dicefreaks the Gates of Hell*/
/*also does +9 damage to S_ANGELs*/
A("The Iconoclast", SABER, (const char *)0,
9999L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
MONS(vsMA(MA_HUMAN|MA_ELF|MA_DWARF|MA_GNOME)),
ATTK(AD_PHYS, 9, 99), (ARTA_HATES),
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("The Three-Headed Flail", FLAIL, "three-headed %s",
6660L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
NO_ATTK(), (ARTA_THREEHEAD),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Heartcleaver", POLEAXE, (const char *)0,
6660L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 1, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Wrathful Wind", CLUB, "cloud-inlaid %s",
6660L, MT_DEFAULT, MZ_HUGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_COLD, 10, 0), (ARTA_SILVER|ARTA_EXPLCOLD),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("Thorns", BULLWHIP, "thorned whip",
6660L, VEGGY, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_ELEC, 1, 10), (ARTA_POIS),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("The Sting of the Poison Queen", FLAIL, (const char *)0,
6660L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_D, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 4, 12), (ARTA_POIS),
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
/* Hates elves, but not drow */
A("The Scourge of Lolth", VIPERWHIP, (const char *)0,
6660L, SILVER, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
MONS(vsMA(MA_ELF)),
ATTK(AD_PHYS, 1, 0), (ARTA_HATES|ARTA_DEXPL),
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
/*Weapon of Graz'zt, from Gord the Rogue*/
A("Doomscreamer", TWO_HANDED_SWORD, (const char *)0,
6660L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_C, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_ACID, 1, 0), NOFLAG,
PROPS(ACID_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/*Needs encyc entry */
A("The Wand of Orcus", WAN_DEATH, (const char *)0,
8000L, MT_DEFAULT, MZ_HUGE, WT_DEFAULT,
A_CHAOTIC, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_DRLI, 20, 12), (ARTA_DRAIN),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_BLOODTHRST)
),
/* Weapons of the Archons. Need encyc entries. */
#define ANGELIC_WEAPON(name, type) \
A((name), (type), (const char *)0, \
7777L, SILVER, MZ_DEFAULT, WT_DEFAULT, \
A_LAWFUL, NON_PM, NON_PM, TIER_B, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT), \
NO_MONS(), \
ATTK(AD_PHYS, 7, 10), (ARTA_BLIND|ARTA_BRIGHT), \
PROPS(BLIND_RES, SEARCHING), NOFLAG, \
PROPS(), NOFLAG, \
NOINVOKE, (ARTI_LIGHT) \
)
ANGELIC_WEAPON("The Sword of Erathaol", LONG_SWORD),
ANGELIC_WEAPON("The Saber of Sabaoth", SABER),
ANGELIC_WEAPON("The Sword of Onoel", TWO_HANDED_SWORD),
ANGELIC_WEAPON("The Glaive of Shamsiel", GLAIVE),
ANGELIC_WEAPON("The Lance of Uriel", LANCE),
ANGELIC_WEAPON("The Hammer of Barquiel", LUCERN_HAMMER),
#undef ANGELIC_WEAPON
A("Arrow of Slaying", SILVER_ARROW, (const char *)0,
777L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_LAWFUL, NON_PM, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR|ARTG_NOCNT),
NO_MONS(),
ATTK(AD_PHYS, 20, 0), (ARTA_VORPAL|ARTA_BLIND|ARTA_BRIGHT),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* mastery artifacts */
/* Archeologist */
/*Always activates special whip effects*/
A("The Trusty Adventurer's Whip", BULLWHIP, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ARCHEOLOGIST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 20, 4), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO read */
A("The Log of the Curator", SPE_BLANK_PAPER, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ARCHEOLOGIST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
OBJECT_DET, NOFLAG
),
/* TODO read */
/* Detects traps */
/* +7 ac, +7+ench to Int, Wis, and Cha */
A("The Fedora of the Investigator", FEDORA, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ARCHEOLOGIST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
OBJECT_DET, NOFLAG
),
/* Anachrononaut */
A("The Force Pike of the Red Guard",FORCE_PIKE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ANACHRONONAUT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_MAGM, 1, 0), (ARTA_MAGIC),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Barbarian */
/* TODO increase STR, DEX, CON by damage taken average */
/* TODO gaining CON increases hp with max hp */
A("The Gauntlets of the Berserker", GAUNTLETS, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_BARBARIAN, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Binder */
A("The Declaration of the Apostate",SCR_REMOVE_CURSE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_EXILE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
UNBIND_SEALS, NOFLAG
),
A("The Soul Lens", SOUL_LENS, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_EXILE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(WARNING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
A("The Seal of the Spirits", SCR_BLANK_PAPER, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_EXILE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Caveman/Cavewoman */
/* TODO use club skill */
A("The Torch of Origins", WAN_FIRE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_CAVEMAN, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_FIRE, 1, 5), (ARTA_VORPAL|ARTA_EXPLFIREX),
PROPS(FIRE_RES), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Convict */
/* TODO */
A("The Striped Shirt of the Murderer", STRIPED_SHIRT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_CONVICT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO protect from theft */
/* TODO implement STEAL */
A("The Striped Shirt of the Thief", STRIPED_SHIRT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_CONVICT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
STEAL, NOFLAG
),
/* TODO */
A("The Striped Shirt of the Falsely Accused", STRIPED_SHIRT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_CONVICT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, (ARTI_LUCK)
),
/* Healer */
/* TODO 2x vs living */
A("The Scalpel of Life and Death", SCALPEL, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_HEALER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
LIFE_DEATH, NOFLAG
),
A("The Gauntlets of the Healing Hand", GAUNTLETS_OF_DEXTERITY, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_HEALER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
HEAL_PETS, (ARTI_PLUSSEV)
),
A("The Ring of Hygiene's Disciple", RIN_REGENERATION, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_HEALER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(REGENERATION), NOFLAG,
PROPS(), NOFLAG,
HEALING, NOFLAG
),
/* Knight */
/*double robe effect*/
A("The Cope of the Eldritch Knight", ROBE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_KNIGHT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
FREE_SPELL, (ARTI_PLUSSEV)
),
A("The Shield of the Paladin", KITE_SHIELD, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_KNIGHT, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
MONS(vsMA(MA_UNDEAD|MA_DEMON)),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
BURN_WARD, (ARTI_PLUSSEV)
),
/* Monk */
A("The Booze of the Drunken Master", POT_BOOZE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_MONK, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
FIRE_BLAST, NOFLAG
),
/* TODO jumping while wielded */
/* TODO staggering blows while wielded */
A("The Khakkhara of the Monkey", KHAKKHARA, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_MONK, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Nobleman/Noblewoman */
/* TODO */
A("The Ruffled Shirt of the Aristocrat",RUFFLED_SHIRT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_NOBLEMAN, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO */
A("The Victorian Underwear of the Aristocrat", VICTORIAN_UNDERWEAR, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_NOBLEMAN, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO name by appearance */
/* TODO implement LOOT_GOLD */
/* TODO PM_NOBLEWOMAN */
A("The Mark of the Rightful Scion", RIN_TELEPORT_CONTROL,/* gold */ (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_NOBLEMAN, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
MONS(vsMA(MA_ORC)),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
COLLECT_TAX, NOFLAG
),
/* Priest/Priestess */
A("The Gauntlets of the Divine Disciple", ORIHALCYON_GAUNTLETS, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_PRIEST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
PROTECT, (ARTI_PLUSSEV)
),
A("The Mace of the Evangelist", MACE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_PRIEST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
SMITE, NOFLAG
),
/* Pirate */
/* Rogue */
/* TODO appearance when poisoned/drugged etc */
/* TODO multishot */
A("The Dart of the Assassin", DART, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ROGUE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), ARTA_RETURNING,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
SELF_POISON, NOFLAG
),
/* TODO only name w/ expert short sword */
A("The Sword of the Kleptomaniac", SHORT_SWORD, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_ROGUE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 5, 5), (ARTA_STEAL),
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
THEFT_TYPE, NOFLAG
),
/* Ranger */
A("The Helm of the Arcane Archer", LEATHER_HELM, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_RANGER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), (ARTA_EXPLFIRE|ARTA_EXPLCOLD|ARTA_EXPLELEC),
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO naming gender */
/* TODO stoning resistance */
/* TODO apply */
A("The Figurine of Pygmalion", FIGURINE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_RANGER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* TODO naming gender */
/* TODO sex resistance */
/* TODO apply */
A("The Figurine of Galatea", FIGURINE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_RANGER, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
SUMMON_PET, NOFLAG
),
/* Samurai */
A("The Helm of the Ninja", HELM_OF_OPPOSITE_ALIGNMENT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_SAMURAI, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
ADD_POISON, (ARTI_PLUSSEV)
),
/* Tourist */
/* TODO towel wetting as in vanilla 3.6.0 */
/* TODO 2x damage while wet */
/* TODO +1 whip skill while wielded */
/* TODO create tinned biscuits instead of lichen */
A("The Towel of the Interstellar Hitchhiker", TOWEL, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_TOURIST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 5, 0), NOFLAG,
PROPS(COLD_RES), NOFLAG,
PROPS(), NOFLAG,
TOWEL_ITEMS, NOFLAG
),
A("The Encyclopedia Galactica", SPE_BLANK_PAPER, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_TOURIST, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(WARNING, TELEPAT), NOFLAG,
MAJ_RUMOR, (ARTI_LUCK)
),
/* Troubadour */
/* Valkyrie */
A("The Twig of Yggdrasil", WAN_TELEPORTATION, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_VALKYRIE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(TELEPORT_CONTROL), NOFLAG,
CREATE_PORTAL, NOFLAG
),
/* TODO flying pets */
A("The Saddle of Brynhildr", SADDLE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_VALKYRIE, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(FLYING), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
),
/* Wizard */
A("The Staff of Wild Magic", QUARTERSTAFF, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_WIZARD, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
ATTK(AD_MAGM, 20, 6), (ARTA_MAGIC|ARTA_EXPLFIRE|ARTA_EXPLCOLD|ARTA_EXPLELEC|ARTA_KNOCKBACKX),
PROPS(SEARCHING), NOFLAG,
PROPS(), NOFLAG,
ENERGY_BOOST, (ARTI_DIG|ARTI_LUCK)
),
/* TODO exploding spell dice */
/* TODO remove as crowning option */
A("The Robe of the Archmagi", ROBE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_WIZARD, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH|ARTG_MAJOR),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(XRAY_VISION, ANTIMAGIC, WARNING), NOFLAG,
PROPS(), NOFLAG,
ENERGY_BOOST, (ARTI_PLUSSEV)
),
/* TODO 2x damage vs non-living */
A("The Forge Hammer of the Artificer", WAR_HAMMER, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, PM_WIZARD, NON_PM, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
ARTIFICE, NOFLAG
),
/* Dwarf */
A("The Bulwark of the Dwarven Defender",DWARVISH_ROUNDSHIELD, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_DWARF, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
BLESS, (ARTI_PLUSSEV)
),
/* Gnome */
/* TODO +1d5 bth against med+ */
/* TODO warn against medium+ */
A("The Hat of the Giant Killer", GNOMISH_POINTY_HAT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_GNOME, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM), NOFLAG,
PROPS(WARN_OF_MON), NOFLAG,
NOINVOKE, (ARTI_PLUSSEV)
),
/* Half-Dragon */
/* TODO pet dragons +1 beast mastery */
A("The Prismatic Dragon Plate", PLATE_MAIL, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_HALF_DRAGON, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(HALF_PHDAM), NOFLAG,
PROPS(), NOFLAG,
PRISMATIC, (ARTI_PLUSSEV)
),
/* Human */
/* Incantifier */
/* TODO random clairvoyance */
A("Footprints in the Labyrinth", STAR_SAPPHIRE, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_INCANTIFIER, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
ATTK(AD_PHYS, 20, 10), NOFLAG,
PROPS(SPELLBOOST), NOFLAG,
PROPS(), NOFLAG,
ENLIGHTENING, (ARTI_PLUSSEV)
),
/* Orc */
/* Vampire */
/* TODO grant darkvision */
/* TODO implement SUMMON_VAMP */
A("The Trappings of the Grave", AMULET_OF_RESTFUL_SLEEP, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, PM_VAMPIRE, NO_TIER, (ARTG_NOGEN|ARTG_NOWISH),
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(ANTIMAGIC), NOFLAG,
PROPS(), NOFLAG,
SUMMON_VAMP, NOFLAG
),
/*
* terminator; otyp must be zero
*/
A((const char *)0, STRANGE_OBJECT, (const char *)0,
0L, MT_DEFAULT, MZ_DEFAULT, WT_DEFAULT,
A_NONE, NON_PM, NON_PM, NO_TIER, NOFLAG,
NO_MONS(),
NO_ATTK(), NOFLAG,
PROPS(), NOFLAG,
PROPS(), NOFLAG,
NOINVOKE, NOFLAG
)
}; /* artilist[] (or artifact_names[]) */
#undef A
#endif /*ARTILIST_H*/
/*artilist.h*/