gold dragon and scales

Add two new monsters and two new objects:
 gold dragon
 baby gold dragon
 gold dragon scale mail
 set of gold dragon scales

A couple of variants seem to have added these already, but this came
off my ancient list of monsters to add and was done from scratch.
It's a clone of silver dragon, but instead of having reflection and
breathing cold, a gold dragon emits light and breathes fire; because
of the latter it can be seen with infravision like a red dragon.
Adult gold dragons are lawful as in the AD&D Monster Manual rather
than chaotic as the wiki pages show for the variant versions.

Worn gold dragon scales operate similar to wielded Sunsword:  when
blessed, radius is 3 (same as a lamp), if uncursed, radius is 2, and
if cursed, radius is 1 (but functions as 2 when worn by the hero,
otherwise there would be no tangible effect).  Gold dragon scale mail
gets an extra +1, making blessed gold DSM have a bigger radius than
lamps.  Embedded scales have radius 1 regardless of BUC state; light
for that case comes from the gold dragon monster form the hero is in.
When not worn, gold scales and scale-mail don't emit any light.

The tiles use a mix of yellow (for gold) and red.  The two object
tiles seem reasonable variations of the corresponding silver dragon
ones.  The two monster tiles definitely need work since the silver
ones were mostly cyan and changing that to red did not produce very
good result; subsequent attempt at a mixture was haphazard at best.
This commit is contained in:
PatR
2021-07-23 10:41:57 -07:00
parent 8e2f168544
commit 5a09a01a13
17 changed files with 1222 additions and 947 deletions

View File

@@ -775,6 +775,8 @@ candle_light_range(struct obj *obj)
int
arti_light_radius(struct obj *obj)
{
int res;
/*
* Used by begin_burn() when setting up a new light source
* (obj->lamplit will already be set by this point) and
@@ -789,20 +791,34 @@ arti_light_radius(struct obj *obj)
/* cursed radius of 1 is not noticeable for an item that's
carried by the hero but is if it's carried by a monster
or left lit on the floor (not applicable for Sunsword) */
return (obj->blessed ? 3 : !obj->cursed ? 2 : 1);
res = (obj->blessed ? 3 : !obj->cursed ? 2 : 1);
/* if poly'd into gold dragon with embedded scales, make the scales
have minimum radiance (hero as light source will use light radius
based on monster form); otherwise, worn gold DSM gives off more
light than other light sources */
if (obj == uskin)
res = 1;
else if (obj->otyp == GOLD_DRAGON_SCALE_MAIL) /* DSM but not scales */
++res;
return res;
}
/* adverb describing lit artifact's light; depends on curse/bless state */
/* adverb describing lit artifact's light; radius varies depending upon
curse/bless state; also used for gold dragon scales/scale mail */
const char *
arti_light_description(struct obj *obj)
{
switch (arti_light_radius(obj)) {
case 4:
return "radiantly"; /* blessed gold dragon scale mail */
case 3:
return "brilliantly"; /* blessed */
return "brilliantly"; /* blessed artifact, uncursed gold DSM */
case 2:
return "brightly"; /* uncursed */
return "brightly"; /* uncursed artifact, cursed gold DSM */
case 1:
return "dimly"; /* cursed */
return "dimly"; /* cursed artifact, embedded scales */
default:
break;
}