crystal helmet
Discussed a long time ago, change helm of brilliance from iron to crystal so that it doesn't need to be a special case for metallic armor's affect on spell casting. It now has a fixed description of "crystal helmet" but is not pre-discovered. Add new helm of caution to retain the "etched helmet" description among the shuffled helms. Wearing it confers the Warning attribute. That's fairly lame but not necessarily useless. It's iron and gets half the former probability for a random piece of armor being helm of brilliance so is not likely to be popular. Helm of caution keeps the old helm of brilliance tile and new helm of brilliance is basically the same image with different color and pointed on the top. Not changed: the etched helmet was marked as green and is drawn that way for text but the tile doesn't actually use green for it. Crystal helmet started as hi_glass (rendered as 'bright cyan') but has been changed to clr_white to match crystal plate mail. Old save and bones files are invalidated.
This commit is contained in:
@@ -1154,6 +1154,8 @@ warnings via impossible() would be unseen if message suppression via ESC at
|
||||
wearing the Eyes of the Overworld overrides OPTIONS:blind; breaking the
|
||||
always-blind conduct by doing that was intended but having permanent
|
||||
blindness stay cured after removing them was not
|
||||
change helm of brilliance from iron to crystal so that it no longer needs to
|
||||
be a special case for metallic armor vs spell casting
|
||||
|
||||
|
||||
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
||||
@@ -1924,8 +1926,8 @@ boiling a pool or fountain now creates a temporary cloud of steam
|
||||
random themed rooms in the dungeons of doom
|
||||
extended achievement and conduct fields for xlogfile
|
||||
record amount of gold in hero's possession in xlogfile
|
||||
new objects: amulets of flying and guarding, gold dragon scale mail and
|
||||
set of gold dragon scales
|
||||
new objects: amulets of flying and guarding, helm of caution,
|
||||
gold dragon scale mail and set of gold dragon scales
|
||||
new monsters: displacer beast ('f') and genetic engineer ('Q'), gold dragon
|
||||
and baby gold dragon (both 'D')
|
||||
make camera flash which reveals previously unseen map features or objects or
|
||||
|
||||
@@ -441,22 +441,29 @@ HELM("fedora", NoDes,
|
||||
FEDORA),
|
||||
HELM("cornuthaum", "conical hat",
|
||||
0, 1, CLAIRVOYANT, 3, 1, 4, 80, 10, 1, CLOTH, CLR_BLUE,
|
||||
CORNUTHAUM),
|
||||
/* name coined by devteam; confers clairvoyance for wizards,
|
||||
blocks clairvoyance if worn by role other than wizard */
|
||||
CORNUTHAUM),
|
||||
HELM("dunce cap", "conical hat",
|
||||
0, 1, 0, 3, 1, 4, 1, 10, 0, CLOTH, CLR_BLUE,
|
||||
/* sets Int and Wis to fixed value of 6, so actually provides
|
||||
protection against death caused by Int being drained below 3 */
|
||||
DUNCE_CAP),
|
||||
HELM("dented pot", NoDes,
|
||||
1, 0, 0, 2, 0, 10, 8, 9, 0, IRON, CLR_BLACK,
|
||||
DENTED_POT),
|
||||
HELM("helm of brilliance", "crystal helmet",
|
||||
0, 1, 0, 3, 1, 40, 50, 9, 0, GLASS, CLR_WHITE,
|
||||
/* used to be iron and shuffled as "etched helmet" but required
|
||||
special case for the effect of iron armor on spell casting */
|
||||
HELM_OF_BRILLIANCE),
|
||||
/* with shuffled appearances... */
|
||||
HELM("helmet", "plumed helmet",
|
||||
0, 0, 0, 10, 1, 30, 10, 9, 0, IRON, HI_METAL,
|
||||
HELMET),
|
||||
HELM("helm of brilliance", "etched helmet",
|
||||
0, 1, 0, 6, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
|
||||
HELM_OF_BRILLIANCE),
|
||||
HELM("helm of caution", "etched helmet",
|
||||
0, 1, WARNING, 3, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
|
||||
HELM_OF_CAUTION),
|
||||
HELM("helm of opposite alignment", "crested helmet",
|
||||
0, 1, 0, 6, 1, 50, 50, 9, 0, IRON, HI_METAL,
|
||||
HELM_OF_OPPOSITE_ALIGNMENT),
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 83
|
||||
#define EDITLEVEL 84
|
||||
|
||||
/*
|
||||
* Development status possibilities.
|
||||
|
||||
@@ -400,6 +400,9 @@ Helmet_on(void)
|
||||
case ORCISH_HELM:
|
||||
case HELM_OF_TELEPATHY:
|
||||
break;
|
||||
case HELM_OF_CAUTION:
|
||||
see_monsters();
|
||||
break;
|
||||
case HELM_OF_BRILLIANCE:
|
||||
adj_abon(uarmh, uarmh->spe);
|
||||
break;
|
||||
@@ -486,6 +489,7 @@ Helmet_off(void)
|
||||
}
|
||||
break;
|
||||
case HELM_OF_TELEPATHY:
|
||||
case HELM_OF_CAUTION:
|
||||
/* need to update ability before calling see_monsters() */
|
||||
setworn((struct obj *) 0, W_ARMH);
|
||||
see_monsters();
|
||||
@@ -1400,7 +1404,7 @@ Blindf_off(struct obj *otmp)
|
||||
also used by poly_obj() when a worn item gets transformed */
|
||||
void
|
||||
set_wear(struct obj *obj) /* if null, do all worn items;
|
||||
otherwise just obj itself */
|
||||
* otherwise just obj itself */
|
||||
{
|
||||
gi.initial_don = !obj;
|
||||
|
||||
@@ -2078,7 +2082,7 @@ accessory_or_armor_on(struct obj *obj)
|
||||
You("are suddenly overcome with shame and change your mind.");
|
||||
u.ublessed = 0; /* lose your god's protection */
|
||||
makeknown(obj->otyp);
|
||||
gc.context.botl = 1; /*for AC after zeroing u.ublessed */
|
||||
gc.context.botl = 1; /* for AC after zeroing u.ublessed */
|
||||
return ECMD_TIME;
|
||||
}
|
||||
} else {
|
||||
|
||||
16
src/spell.c
16
src/spell.c
@@ -1630,7 +1630,8 @@ sortspells(void)
|
||||
}
|
||||
|
||||
/* usual case, sort the index rather than the spells themselves */
|
||||
qsort((genericptr_t) gs.spl_orderindx, n, sizeof *gs.spl_orderindx, spell_cmp);
|
||||
qsort((genericptr_t) gs.spl_orderindx, n,
|
||||
sizeof *gs.spl_orderindx, spell_cmp);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1662,7 +1663,8 @@ spellsortmenu(void)
|
||||
any.a_int = i + 1;
|
||||
add_menu(tmpwin, &nul_glyphinfo, &any, let, 0,
|
||||
ATR_NONE, clr, spl_sortchoices[i],
|
||||
(i == gs.spl_sortmode) ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
|
||||
(i == gs.spl_sortmode) ? MENU_ITEMFLAGS_SELECTED
|
||||
: MENU_ITEMFLAGS_NONE);
|
||||
}
|
||||
end_menu(tmpwin, "View known spells list sorted");
|
||||
|
||||
@@ -1823,10 +1825,10 @@ percent_success(int spell)
|
||||
*/
|
||||
int chance, splcaster, special, statused;
|
||||
int difficulty;
|
||||
int skill;
|
||||
int skill, skilltype = spell_skilltype(spellid(spell));
|
||||
/* Knights don't get metal armor penalty for clerical spells */
|
||||
boolean paladin_bonus = Role_if(PM_KNIGHT)
|
||||
&& spell_skilltype(spellid(spell)) == P_CLERIC_SPELL;
|
||||
boolean paladin_bonus = (Role_if(PM_KNIGHT)
|
||||
&& skilltype == P_CLERIC_SPELL);
|
||||
|
||||
/* Calculate intrinsic ability (splcaster) */
|
||||
|
||||
@@ -1843,7 +1845,7 @@ percent_success(int spell)
|
||||
splcaster += gu.urole.spelshld;
|
||||
|
||||
if (!paladin_bonus) {
|
||||
if (uarmh && is_metallic(uarmh) && uarmh->otyp != HELM_OF_BRILLIANCE)
|
||||
if (uarmh && is_metallic(uarmh)) /* && otyp != HELM_OF_BRILLIANCE */
|
||||
splcaster += uarmhbon;
|
||||
if (uarmg && is_metallic(uarmg))
|
||||
splcaster += uarmgbon;
|
||||
@@ -1877,7 +1879,7 @@ percent_success(int spell)
|
||||
* The difficulty is based on the hero's level and their skill level
|
||||
* in that spell type.
|
||||
*/
|
||||
skill = P_SKILL(spell_skilltype(spellid(spell)));
|
||||
skill = P_SKILL(skilltype);
|
||||
skill = max(skill, P_UNSKILLED) - 1; /* unskilled => 0 */
|
||||
difficulty =
|
||||
(spellev(spell) - 1) * 4 - ((skill * 6) + (u.ulevel / 3) + 1);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user