hobbits getting a sling also get some ammo for it
elves and rangers get alignment penalty for cutting down trees
casting a forgotten spell uses some random amount of power
+heroes starting with a spell have at least one level one spell, and
+ have just enough power to cast it
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
extern boolean known_spell(short);
extern int spell_idx(short);
extern boolean force_learn_spell(short);
+extern int num_spells(void);
/* ### steal.c ### */
return FALSE;
}
+/* number of spells hero knows */
+int
+num_spells(void)
+{
+ int i;
+
+ for (i = 0; i < MAXSPELL; i++)
+ if (spellid(i) == NO_SPELL)
+ break;
+ return i;
+}
+
/*spell.c*/
break;
}
+ /* If we have at least one spell, force starting Pw to be 5,
+ so hero can cast the level 1 spell they should have */
+ if (num_spells() && (u.uenmax < 5))
+ u.uen = u.uenmax = u.uenpeak = u.ueninc[u.ulevel] = 5;
+
return;
}
{
struct obj *obj;
int otyp, i;
+ boolean got_sp1 = FALSE; /* got a level 1 spellbook? */
while (trop->trclass) {
otyp = (int) trop->trotyp;
low level players or unbalancing; also
spells in restricted skill categories */
|| (obj->oclass == SPBOOK_CLASS
- && (objects[otyp].oc_level > 3
+ && (objects[otyp].oc_level > (got_sp1 ? 3 : 1)
|| restricted_spell_discipline(otyp)))
|| otyp == SPE_NOVEL) {
dealloc_obj(obj);
/* Don't have 2 of the same ring or spellbook */
if (obj->oclass == RING_CLASS || obj->oclass == SPBOOK_CLASS)
g.nocreate4 = otyp;
+ /* First spellbook should be level 1 - did we get it? */
+ if (obj->oclass == SPBOOK_CLASS && objects[obj->otyp].oc_level == 1)
+ got_sp1 = TRUE;
}
if (g.urace.mnum != PM_HUMAN) {