add two new types of amulet: flying and guarding

We haven't added any new objects or monsters in a really long time.
This adds two new useful amulets, putting more pressure on the
decision over which type of amulet to wear.

amulet of flying:  idea from slash'em, implemented from scratch.
  Should be self-explanatory.  Polymorphing into a form capable of
  eating amulets and then eating one does not confer intrinsic
  flight.  (I've no idea how slash'em behaves is in that regard.)

amulet of guarding:  adds +2 AC, which is fairly negligible, also
  +2 MC, which is not.  Initially called amulet of protection but MC
  of 2 is referred to as 'guarded' by enlightenment so I changed it.
  (By that reasoning, rings of protection ought to be called rings of
  warding; oh, well.)  Successfully eating one confers +2 AC without
  any MC benefit.  When wearing one of these, rings of protection
  only confer AC, their +1 MC gets superseded rather than combined.

Monsters will wear an amulet of guarding and gain both the AC and
MC benefit, but if not cursed and they acquire one of life-saving or
reflection, they'll swap.  They won't wear an amulet of flying.

I cloned two extra copies of the tile for one of the existing amulets
and ran sys/share/objects.txt through renumtiles.pl.  The result
appears to be ok but on X11 the tiles map ends up looking psychedelic
so something beyond the tile art itself needs to be fixed here.
This commit is contained in:
PatR
2020-05-02 02:07:33 -07:00
parent eb704832a9
commit 4d52332dda
9 changed files with 411 additions and 294 deletions

View File

@@ -607,15 +607,20 @@ RING("protection from shape changers", "shiny",
OBJECT(OBJ(name, desc), \
BITS(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, P_NONE, IRON), \
power, AMULET_CLASS, prob, 0, 20, 150, 0, 0, 0, 0, 20, HI_METAL)
AMULET("amulet of ESP", "circular", TELEPAT, 175),
AMULET("amulet of ESP", "circular", TELEPAT, 120),
AMULET("amulet of life saving", "spherical", LIFESAVED, 75),
AMULET("amulet of strangulation", "oval", STRANGLED, 135),
AMULET("amulet of restful sleep", "triangular", SLEEPY, 135),
AMULET("amulet versus poison", "pyramidal", POISON_RES, 165),
AMULET("amulet of change", "square", 0, 130),
AMULET("amulet of unchanging", "concave", UNCHANGING, 45),
AMULET("amulet of strangulation", "oval", STRANGLED, 115),
AMULET("amulet of restful sleep", "triangular", SLEEPY, 115),
AMULET("amulet versus poison", "pyramidal", POISON_RES, 115),
AMULET("amulet of change", "square", 0, 115),
AMULET("amulet of unchanging", "concave", UNCHANGING, 60),
AMULET("amulet of reflection", "hexagonal", REFLECTING, 75),
AMULET("amulet of magical breathing", "octagonal", MAGICAL_BREATHING, 65),
AMULET("amulet of magical breathing", "octagonal", MAGICAL_BREATHING, 75),
/* +2 AC and +2 MC; +2 takes naked hero past 'warded' to 'guarded' */
AMULET("amulet of guarding", "pentagonal", PROTECTION, 75),
/* cubical: some descriptions are already three dimensional and
parallelogrammatical (real word!) would be way over the top */
AMULET("amulet of flying", "cubical", FLYING, 60),
/* fixed descriptions; description duplication is deliberate;
* fake one must come before real one because selection for
* description shuffling stops when a non-magic amulet is encountered