From: PatR Date: Fri, 5 Feb 2016 08:25:39 +0000 (-0800) Subject: spell skils for role-specific special spell X-Git-Tag: NetHack-3.6.1_RC01~952 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3c4152f52ad5d1bfbf0c0208de0e1592a90f10f6;p=nethack spell skils for role-specific special spell Every role has a specific spell that they having an easier time casting. Samurai's special spell is clairvoyance but samurai is restricted in divination spells. Requested about 4.5 years ago: allow samurai to achieve basic skill in divination. Similar for barbarian, special spell is haste self but escape spells are restricted. All the other roles can already get at least basic in their special spell's category. There were several choices: 1) leave things as they are; 2) give those two roles different special spells; 3) allow them to reach basic in the spell category of the existing special spell; 4) #2 for one of those roles, #3 for the other. I went with #3. To compensate, reduce attack spell skill limit from skilled to basic for both. (#4 might be better, since the reason to want divination enhanced is most likely identify and magic mapping, not interest in clairvoyance.) --- diff --git a/src/u_init.c b/src/u_init.c index f0c1e3756..50e90d9d7 100644 --- a/src/u_init.c +++ b/src/u_init.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 u_init.c $NHDT-Date: 1446861772 2015/11/07 02:02:52 $ $NHDT-Branch: master $:$NHDT-Revision: 1.35 $ */ +/* NetHack 3.6 u_init.c $NHDT-Date: 1454660565 2016/02/05 08:22:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.37 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -270,7 +270,8 @@ static const struct def_skill Skill_B[] = { { P_SPEAR, P_SKILLED }, { P_TRIDENT, P_SKILLED }, { P_BOW, P_BASIC }, - { P_ATTACK_SPELL, P_SKILLED }, + { P_ATTACK_SPELL, P_BASIC }, + { P_ESCAPE_SPELL, P_BASIC }, /* special spell is haste self */ { P_RIDING, P_BASIC }, { P_TWO_WEAPON_COMBAT, P_BASIC }, { P_BARE_HANDED_COMBAT, P_MASTER }, @@ -458,7 +459,8 @@ static const struct def_skill Skill_S[] = { { P_LANCE, P_SKILLED }, { P_BOW, P_EXPERT }, { P_SHURIKEN, P_EXPERT }, - { P_ATTACK_SPELL, P_SKILLED }, + { P_ATTACK_SPELL, P_BASIC }, + { P_DIVINATION_SPELL, P_BASIC }, /* special spell is clairvoyance */ { P_CLERIC_SPELL, P_SKILLED }, { P_RIDING, P_SKILLED }, { P_TWO_WEAPON_COMBAT, P_EXPERT }, diff --git a/src/weapon.c b/src/weapon.c index cdbd440db..4a6ebbea3 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 weapon.c $NHDT-Date: 1446078767 2015/10/29 00:32:47 $ $NHDT-Branch: master $:$NHDT-Revision: 1.55 $ */ +/* NetHack 3.6 weapon.c $NHDT-Date: 1454660575 2016/02/05 08:22:55 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.57 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1147,7 +1147,7 @@ enhance_weapon_skill() /* * Change from restricted to unrestricted, allowing P_BASIC as max. This - * function may be called with with P_NONE. Used in pray.c. + * function may be called with with P_NONE. Used in pray.c as well as below. */ void unrestrict_weapon_skill(skill) @@ -1501,6 +1501,10 @@ const struct def_skill *class_skill; P_ADVANCE(skill) = practice_needed_to_advance(P_SKILL(skill) - 1); } } + + /* each role has a special spell; allow at least basic for its type + (despite the function name, this works for spell skills too) */ + unrestrict_weapon_skill(spell_skilltype(urole.spelspec)); } void