mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2025-08-04 03:44:04 +01:00
Add several of the ACU artifacts up to flickering outline.
This commit is contained in:
parent
58df2275e9
commit
370ff0eff6
9 changed files with 175 additions and 4 deletions
|
@ -679,6 +679,7 @@ struct obj {
|
|||
|| ((otmp)->oartifact == ART_BLADE_DANCER_S_DAGGER && uwep && uwep->oartifact==ART_SODE_NO_SHIRAYUKI)\
|
||||
|| ((otmp)->oartifact == ART_FRIEDE_S_SCYTHE && uwep && uwep->oartifact==ART_PROFANED_GREATSCYTHE)\
|
||||
|| ((otmp)->oartifact == ART_FRIEDE_S_SCYTHE && uwep && uwep->oartifact==ART_LIFEHUNT_SCYTHE)\
|
||||
|| ((otmp)->oartifact == ART_MEMORY && uwep && uwep->oartifact==ART_THOUGHT)\
|
||||
|| ((otmp)->oartifact == ART_MJOLLNIR && Role_if(PM_VALKYRIE))\
|
||||
|| ((otmp)->oartifact == ART_CLEAVER && Role_if(PM_BARBARIAN))\
|
||||
|| ((otmp)->oartifact == ART_TECPATL_OF_HUHETOTL && Role_if(PM_ARCHEOLOGIST))\
|
||||
|
|
|
@ -3938,6 +3938,7 @@ use_grapple (obj)
|
|||
if (typ == P_NONE || P_SKILL(typ) <= P_BASIC) max_range = 4;
|
||||
else if (P_SKILL(typ) == P_SKILLED) max_range = 5;
|
||||
else max_range = 8;
|
||||
if(obj->oartifact == ART_PUPPET_WIRE) max_range = 8;
|
||||
if (distu(cc.x, cc.y) > max_range) {
|
||||
pline("Too far!");
|
||||
return (res);
|
||||
|
@ -3951,7 +3952,8 @@ use_grapple (obj)
|
|||
|
||||
/* What do you want to hit? */
|
||||
tohit = rn2(5);
|
||||
if (typ != P_NONE && P_SKILL(typ) >= P_SKILLED) {
|
||||
if(obj->oartifact == ART_PUPPET_WIRE) tohit = 2;
|
||||
else if (typ != P_NONE && P_SKILL(typ) >= P_SKILLED) {
|
||||
winid tmpwin = create_nhwindow(NHW_MENU);
|
||||
anything any;
|
||||
char buf[BUFSZ];
|
||||
|
@ -3996,7 +3998,7 @@ use_grapple (obj)
|
|||
break;
|
||||
case 2: /* Monster */
|
||||
if ((mtmp = m_at(cc.x, cc.y)) == (struct monst *)0) break;
|
||||
if (verysmall(mtmp->data) && !rn2(4) &&
|
||||
if ((obj->oartifact == ART_PUPPET_WIRE || (verysmall(mtmp->data) && !rn2(4))) &&
|
||||
enexto(&cc, u.ux, u.uy, (struct permonst *)0)) {
|
||||
You("pull in %s!", mon_nam(mtmp));
|
||||
mtmp->mundetected = 0;
|
||||
|
|
|
@ -1782,6 +1782,9 @@ boolean narrow_only;
|
|||
case AD_BLUD:
|
||||
if (!has_blood_mon(mdef))
|
||||
return FALSE;
|
||||
case AD_DRIN:
|
||||
if (mindless_mon(mdef))
|
||||
return FALSE;
|
||||
break;
|
||||
default:
|
||||
impossible("Weird weapon special attack: (%d).", weap->adtyp);
|
||||
|
@ -3698,6 +3701,18 @@ boolean * messaged;
|
|||
}
|
||||
if (!rn2(4)) (void) destroy_item(mdef, POTION_CLASS, AD_COLD);
|
||||
}
|
||||
if(attacks(AD_DRIN, otmp)){
|
||||
if (vis&VIS_MAGR)
|
||||
pline_The("%s %s %s %s%c", otmp->oartifact == ART_ILLITHID_STAFF?"tentacled":"sparkling",
|
||||
otmp->oartifact == ART_ILLITHID_STAFF?"staff":otmp->oartifact == ART_ELDER_CEREBRAL_FLUID?"crystal":"blade",
|
||||
!spec_dbon_applies ? "hits" : otmp->oartifact == ART_ILLITHID_STAFF?"brain sucks":"mentally drains",
|
||||
hittee, !spec_dbon_applies ? '.' : '!');
|
||||
if(spec_dbon_applies && vis&VIS_MAGR && otmp->oartifact != ART_ILLITHID_STAFF)
|
||||
if(cancel_monst(mdef, otmp, youagr, FALSE, FALSE,0)) pline_The("%s %s %s %s%c", "sparkling", otmp->oartifact==ART_ELDER_CEREBRAL_FLUID?"crystal":"blade",
|
||||
"cancels",
|
||||
hittee, '!');
|
||||
*messaged = vis&VIS_MAGR;
|
||||
}
|
||||
if (oartifact == ART_SHADOWLOCK) {
|
||||
if (!Cold_res(mdef)) {
|
||||
if (vis&VIS_MAGR) {
|
||||
|
|
141
src/artilist.c
141
src/artilist.c
|
@ -2601,6 +2601,147 @@ A("The Hand of Vecna", SEVERED_HAND, (const char *)0,
|
|||
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_B, (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_S, (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_D, (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_A, (ARTG_NOGEN|ARTG_NOWISH|ARTG_NOCNT),
|
||||
NO_MONS(),
|
||||
NO_ATTK(), NOFLAG,
|
||||
PROPS(COLD_RES), NOFLAG,
|
||||
PROPS(), NOFLAG,
|
||||
SHADOW_FLARE, (ARTI_PLUSSEV)
|
||||
),
|
||||
|
||||
A("The Elder Cerebral Fluid", 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("The Illithid Staff", 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
|
||||
),
|
||||
|
||||
|
||||
/*Needs encyc entry, somehow*/
|
||||
A("Genocide", TWO_HANDED_SWORD, (const char *)0,
|
||||
9999L, MT_DEFAULT, MZ_LARGE, WT_DEFAULT,
|
||||
|
|
|
@ -558,6 +558,8 @@ const char *name;
|
|||
obj->corpsenm = PM_DWARF;
|
||||
if (obj->oartifact == ART_MASK_OF_TLALOC)
|
||||
obj->corpsenm = PM_GOD;
|
||||
if (obj->oartifact == ART_STONE_MASK)
|
||||
obj->corpsenm = PM_SHIRO;
|
||||
|
||||
/* weight */
|
||||
if (obj->oartifact == ART_GREEN_DRAGON_CRESCENT_BLAD)
|
||||
|
|
|
@ -7839,7 +7839,7 @@ register struct monst *mtmp;
|
|||
(void)mongets(mtmp, PLATE_MAIL);
|
||||
(void)mongets(mtmp, LONG_SWORD);
|
||||
struct obj *otmp = mksobj(HELMET, TRUE, FALSE); //make articrown (ok made crown of antisucc)
|
||||
//otmp = oname(otmp, artiname(ART_CROWN_OF_BERITH));
|
||||
otmp = oname(otmp, artiname(ART_CROWN_OF_BERITH));
|
||||
otmp->blessed = FALSE;
|
||||
otmp->cursed = FALSE;
|
||||
(void) mpickobj(mtmp,otmp);
|
||||
|
|
|
@ -3904,6 +3904,7 @@ int wishflags;
|
|||
mat = GEMSTONE;
|
||||
} else if ((!strncmpi(bp, "stone ", l=6) || !strncmpi(bp, "ceramic ", l=8))
|
||||
&& strncmpi(bp, "stone to flesh", 14) && strncmpi(bp, "stone dragon shield", 19)
|
||||
&& strncmpi(bp, "stone mask", 10)
|
||||
) {
|
||||
mat = MINERAL;
|
||||
} else if (!strncmpi(bp, "salt ", l=5)) {
|
||||
|
@ -4253,6 +4254,9 @@ int wishflags;
|
|||
&& !strstri(bp, "lump ")
|
||||
&& !strstri(bp, "rod ")
|
||||
&& !strstri(bp, "finger ")
|
||||
&& !strstri(bp, "crown of ")
|
||||
&& !strstri(bp, "talisman of ")
|
||||
&& !strstri(bp, "dread of ")
|
||||
&& !strstri(bp, "set of ")) {
|
||||
if ((p = strstri(bp, " of ")) != 0
|
||||
&& (mntmp = name_to_mon(p+4)) >= LOW_PM)
|
||||
|
@ -4284,6 +4288,9 @@ int wishflags;
|
|||
if (strncmpi(bp, "frosted lake", 12)) /* not a "frosted lake" */
|
||||
if (strncmpi(bp, "chromatic dragon scales", 23)) /* not a "dragon" */
|
||||
if (strncmpi(bp, "platinum dragon plate", 22)) /* not a "dragon" */
|
||||
if (strncmpi(bp, "eden's scales", 12)) /* not a something bad */
|
||||
if (strncmpi(bp, "eurynome's dancing shoes", 24)) /* not a something bad */
|
||||
if (strncmpi(bp, "jack's torch", 12)) /* not jack*/
|
||||
if (mntmp < LOW_PM && strlen(bp) > 2 &&
|
||||
(mntmp = name_to_mon(bp)) >= LOW_PM) {
|
||||
int mntmptoo, mntmplen; /* double check for rank title */
|
||||
|
|
|
@ -3130,6 +3130,7 @@ int wep_type;
|
|||
if (uswapwep && uswapwep->owt > maxweight && !(
|
||||
(uwep && (uwep->otyp == STILETTOS)) ||
|
||||
(uswapwep->oartifact == ART_BLADE_DANCER_S_DAGGER) ||
|
||||
(uswapwep->oartifact == ART_MEMORY) ||
|
||||
(uswapwep->oartifact == ART_FRIEDE_S_SCYTHE)
|
||||
))
|
||||
{
|
||||
|
@ -3426,6 +3427,7 @@ int wep_type;
|
|||
if (uswapwep && uswapwep->owt > maxweight && !(
|
||||
(uwep && (uwep->otyp == STILETTOS)) ||
|
||||
(uswapwep->oartifact == ART_BLADE_DANCER_S_DAGGER) ||
|
||||
(uswapwep->oartifact == ART_MEMORY) ||
|
||||
(uswapwep->oartifact == ART_FRIEDE_S_SCYTHE)
|
||||
))
|
||||
{
|
||||
|
|
|
@ -2490,6 +2490,7 @@ int vis;
|
|||
|
||||
if (obj && (
|
||||
(obj->greased || obj->otyp == OILSKIN_CLOAK) || /* greased (or oilskin) armor */
|
||||
(obj->oartifact == ART_CROWN_OF_BERITH) ||
|
||||
(attk->adtyp == AD_WRAP && obj->otyp == find_mboots()) /* mud boots vs wrap attacks */
|
||||
)
|
||||
&&
|
||||
|
@ -2503,7 +2504,7 @@ int vis;
|
|||
(youagr ? "" : "s"),
|
||||
(attk->adtyp == AD_WRAP ? " off of" : ", but cannot hold onto"),
|
||||
(youdef ? "your" : s_suffix(mon_nam(mdef))),
|
||||
(obj->greased ? "greased" : "slippery"),
|
||||
(obj->greased ? "greased" : (obj->oartifact == ART_CROWN_OF_BERITH) ? "blood dripping" : "slippery"),
|
||||
((obj->otyp == OILSKIN_CLOAK && !objects[obj->otyp].oc_name_known)
|
||||
? cloak_simple_name(obj) : obj->otyp == find_mboots() ? "mud boots" : xname(obj))
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue