Skip to content

Commit

Permalink
Two alignment keys can be forged together to create The Key of Access.
Browse files Browse the repository at this point in the history
This is a fun use of artifact forging that gives the alignment keys a bit more spice. Any two can be combined. Also very important - the Key of Access can be used in place of two keys to get into Vlad's Tower.

I had to make a few changes to the alignment keys by converting them all to gemstone, this allows forging them. I also had the alignment keys on the totally indestructible list but this prevents them from being used in forging. So now, they can be susceptible to disintegration, but a very low probability. The Key of Access is indestructible however.
  • Loading branch information
elunna committed Jul 27, 2023
1 parent 32dc3ae commit 539ca03
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 13 deletions.
1 change: 1 addition & 0 deletions hackem_changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

Version 1.2.0 (unreleased)

Two alignment keys can be forged together to create The Key of Access.
Clarify message when Vlad's tower is unlocked.
Switch Und-Vam blood potions for vampire blood potions.
Acquiring two alignment keys is now mandatory to ascend Vlad's Tower.
Expand Down
18 changes: 8 additions & 10 deletions include/artilist.h
Original file line number Diff line number Diff line change
Expand Up @@ -488,13 +488,6 @@ STATIC_OVL NEARDATA struct artifact artilist[] = {
NO_COLOR, SILVER),

/*** Alignment quest artifacts ***/
#if 0
A("The Key Of Access", SKELETON_KEY,
(SPFX_RESTR | SPFX_NOWISH | SPFX_NOGEN), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY,
CREATE_PORTAL, A_LAWFUL, NON_PM, NON_PM, 200L, NO_COLOR, GEMSTONE),
#endif

A("Nighthorn", UNICORN_HORN,
(SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_REFLECT), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM,
Expand All @@ -515,17 +508,17 @@ STATIC_OVL NEARDATA struct artifact artilist[] = {
A("The Key of Law", SKELETON_KEY,
(SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_INTEL), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM,
1000L, NO_COLOR, DEFAULT_MAT),
1000L, NO_COLOR, GEMSTONE),

A("The Key of Neutrality", SKELETON_KEY,
(SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_INTEL), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY, 0, A_NEUTRAL, NON_PM, NON_PM,
1000L, NO_COLOR, DEFAULT_MAT),
1000L, NO_COLOR, GEMSTONE),

A("The Key of Chaos", SKELETON_KEY,
(SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_INTEL), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, NON_PM,
1000L, NO_COLOR, DEFAULT_MAT),
1000L, NO_COLOR, GEMSTONE),



Expand All @@ -550,6 +543,11 @@ STATIC_OVL NEARDATA struct artifact artilist[] = {
0, 0, DISN(5, 12), DFNS(AD_DISN), NO_CARY, 0, A_NONE,
NON_PM, NON_PM, 25000L, NO_COLOR, METAL),
#endif
A("The Key Of Access", SKELETON_KEY,
(SPFX_RESTR | SPFX_NOWISH | SPFX_NOGEN | SPFX_FORGED), 0, 0,
NO_ATTK, NO_DFNS, NO_CARY,
CREATE_PORTAL, A_NONE, NON_PM, NON_PM, 200L, NO_COLOR, GEMSTONE),

/* Created by fusing werebane and trollsbane. Original idea by Spicy.
Prevents all monster regen. */
A("Mortality Dial", EXECUTIONER_S_MACE,
Expand Down
2 changes: 2 additions & 0 deletions src/do.c
Original file line number Diff line number Diff line change
Expand Up @@ -2743,6 +2743,8 @@ STATIC_OVL int
countkeys()
{
int count = 0;
if (carrying_arti(ART_KEY_OF_ACCESS))
count = 2;
if (carrying_arti(ART_KEY_OF_NEUTRALITY))
count++;
if (carrying_arti(ART_KEY_OF_CHAOS))
Expand Down
3 changes: 3 additions & 0 deletions src/fountain.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,6 +583,9 @@ static const struct forge_arti {
/* artifacts */
/* { ART_SWORD_OF_ANNIHILATION, ART_FIRE_BRAND, ART_FROST_BRAND }, */
{ ART_MORTALITY_DIAL, ART_WEREBANE, ART_TROLLSBANE },
{ ART_KEY_OF_ACCESS, ART_KEY_OF_LAW, ART_KEY_OF_CHAOS },
{ ART_KEY_OF_ACCESS, ART_KEY_OF_LAW, ART_KEY_OF_NEUTRALITY },
{ ART_KEY_OF_ACCESS, ART_KEY_OF_CHAOS, ART_KEY_OF_NEUTRALITY },
{ 0, 0, 0 }
};

Expand Down
4 changes: 1 addition & 3 deletions src/zap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1567,9 +1567,7 @@ int ochance, achance; /* percent chance for ordinary objects, artifacts */
|| (obj->otyp == CORPSE && is_rider(&mons[obj->corpsenm]))
|| (obj->oartifact & (obj->oartifact == ART_BALMUNG
|| obj->oartifact == ART_BRADAMANTE_S_FURY
|| obj->oartifact == ART_KEY_OF_LAW
|| obj->oartifact == ART_KEY_OF_NEUTRALITY
|| obj->oartifact == ART_KEY_OF_CHAOS))) {
|| obj->oartifact == ART_KEY_OF_ACCESS))) {
return TRUE;
} else {
int chance = rn2(100);
Expand Down

0 comments on commit 539ca03

Please sign in to comment.