summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/artefact.cc
diff options
context:
space:
mode:
authorChris Oelmueller <chris.oelmueller@gmail.com>2014-04-24 15:19:29 +0200
committerShmuale Mark <shm.mark@gmail.com>2014-04-30 03:21:01 -0400
commitf3c7235ddb147bc10b815d7cf37697925bf3725c (patch)
tree173ab34b26badbc391416880ad1bca2116207815 /crawl-ref/source/artefact.cc
parent27581562e7e0154cc7ac97af3925bc700d7d89b9 (diff)
downloadcrawl-ref-f3c7235ddb147bc10b815d7cf37697925bf3725c.tar.gz
crawl-ref-f3c7235ddb147bc10b815d7cf37697925bf3725c.zip
Replace rings of hunger/sustenance with loudness/stealth in-place
Those give one level of -50/+50 stealth each. Stealth is priced at old sustenance level (but often comes cursed), loudness around 50-60 after curses.
Diffstat (limited to 'crawl-ref/source/artefact.cc')
-rw-r--r--crawl-ref/source/artefact.cc46
1 files changed, 30 insertions, 16 deletions
diff --git a/crawl-ref/source/artefact.cc b/crawl-ref/source/artefact.cc
index 932c13465b..56b03d1dd1 100644
--- a/crawl-ref/source/artefact.cc
+++ b/crawl-ref/source/artefact.cc
@@ -59,15 +59,15 @@ static bool _god_fits_artefact(const god_type which_god, const item_def &item,
type_bad = true;
break;
- case GOD_OKAWARU:
- // Precision fighter god: no inaccuracy.
- if (item.base_type == OBJ_JEWELLERY && item.sub_type == AMU_INACCURACY)
+ case GOD_SHINING_ONE:
+ // Crusader god: holiness, honourable combat.
+ if (item.base_type == OBJ_JEWELLERY && item.sub_type == RING_STEALTH)
type_bad = true;
break;
- case GOD_ZIN:
- // Lawful god: no increased hunger.
- if (item.base_type == OBJ_JEWELLERY && item.sub_type == RING_HUNGER)
+ case GOD_OKAWARU:
+ // Precision fighter god: no inaccuracy.
+ if (item.base_type == OBJ_JEWELLERY && item.sub_type == AMU_INACCURACY)
type_bad = true;
break;
@@ -102,6 +102,12 @@ static bool _god_fits_artefact(const god_type which_god, const item_def &item,
type_bad = true;
break;
+ case GOD_DITHMENOS:
+ // Shadow god: no reducing stealth.
+ if (item.base_type == OBJ_JEWELLERY && item.sub_type == RING_LOUDNESS)
+ type_bad = true;
+ break;
+
default:
break;
}
@@ -222,6 +228,9 @@ static bool _god_fits_artefact(const god_type which_god, const item_def &item,
{
return false;
}
+ // No reducing stealth.
+ if (artefact_wpn_property(item, ARTP_STEALTH) < 0)
+ return false;
break;
default:
@@ -520,13 +529,13 @@ void artefact_desc_properties(const item_def &item,
fake_rap = ARTP_EYESIGHT;
break;
- case RING_HUNGER:
- fake_rap = ARTP_METABOLISM;
+ case RING_LOUDNESS:
+ fake_rap = ARTP_STEALTH;
+ fake_plus = -1;
break;
- case RING_SUSTENANCE:
- fake_rap = ARTP_METABOLISM;
- fake_plus = -1;
+ case RING_STEALTH:
+ fake_rap = ARTP_STEALTH;
break;
case RING_REGENERATION:
@@ -1068,6 +1077,11 @@ static void _get_randart_properties(const item_def &item,
proprt[ARTP_COLD] = -1;
break;
case 7: // less stealthy
+ if (aclass == OBJ_JEWELLERY
+ && (atype == RING_LOUDNESS || atype == RING_STEALTH))
+ {
+ break;
+ }
proprt[ARTP_STEALTH] = -1 - random2(2);
break;
case 8:
@@ -1671,8 +1685,8 @@ static bool _randart_is_redundant(const item_def &item,
provides = ARTP_INVISIBLE;
break;
- case RING_HUNGER:
- provides = ARTP_METABOLISM;
+ case RING_STEALTH:
+ provides = ARTP_STEALTH;
break;
case RING_TELEPORTATION:
@@ -1765,8 +1779,8 @@ static bool _randart_is_conflicting(const item_def &item,
switch (item.sub_type)
{
- case RING_SUSTENANCE:
- conflicts = ARTP_METABOLISM;
+ case RING_LOUDNESS:
+ conflicts = ARTP_STEALTH;
break;
case RING_FIRE:
@@ -1966,7 +1980,7 @@ static void _make_faerie_armour(item_def &item)
static jewellery_type octoring_types[8] =
{
RING_REGENERATION, RING_PROTECTION_FROM_FIRE, RING_PROTECTION_FROM_COLD,
- RING_SUSTAIN_ABILITIES, RING_SUSTENANCE, RING_WIZARDRY, RING_MAGICAL_POWER,
+ RING_SUSTAIN_ABILITIES, RING_STEALTH, RING_WIZARDRY, RING_MAGICAL_POWER,
RING_LIFE_PROTECTION
};