Illiterate hero will learn spells directly from deity
... instead of receiving a spellbook.
This commit is contained in:
@@ -798,6 +798,8 @@ engraving with Fire Brand burns the text on the floor and does not
|
||||
make looting less tedious by getting rid of a y/n prompt making the command
|
||||
go directly into the loot-in-out -menu
|
||||
always give a message when monster changes form via polytrap if seen
|
||||
illiterate hero receiving a spellbook from their deity gets the spell shoved
|
||||
directly into their mind instead
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||
|
||||
@@ -2538,6 +2538,7 @@ extern int dovspell(void);
|
||||
extern void initialspell(struct obj *);
|
||||
extern boolean known_spell(short);
|
||||
extern int spell_idx(short);
|
||||
extern boolean force_learn_spell(short);
|
||||
|
||||
/* ### steal.c ### */
|
||||
|
||||
|
||||
15
src/pray.c
15
src/pray.c
@@ -1201,10 +1201,17 @@ pleased(aligntyp g_align)
|
||||
}
|
||||
otmp->otyp = rnd_class(g.bases[SPBOOK_CLASS], SPE_BLANK_PAPER);
|
||||
}
|
||||
bless(otmp);
|
||||
at_your_feet("A spellbook");
|
||||
place_object(otmp, u.ux, u.uy);
|
||||
newsym(u.ux, u.uy);
|
||||
if (!u.uconduct.literate && !known_spell(otmp->otyp)) {
|
||||
if (force_learn_spell(otmp->otyp))
|
||||
pline("Divine knowledge of %s fills your mind!",
|
||||
OBJ_NAME(objects[otmp->otyp]));
|
||||
obfree(otmp, (struct obj *) 0);
|
||||
} else {
|
||||
bless(otmp);
|
||||
at_your_feet("A spellbook");
|
||||
place_object(otmp, u.ux, u.uy);
|
||||
newsym(u.ux, u.uy);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
23
src/spell.c
23
src/spell.c
@@ -1947,4 +1947,27 @@ spell_idx(short otyp)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* forcibly learn spell otyp, if possible */
|
||||
boolean
|
||||
force_learn_spell(short otyp)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (known_spell(otyp))
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < MAXSPELL; i++)
|
||||
if (spellid(i) == NO_SPELL)
|
||||
break;
|
||||
if (i == MAXSPELL)
|
||||
impossible("Too many spells memorized");
|
||||
else {
|
||||
g.spl_book[i].sp_id = otyp;
|
||||
g.spl_book[i].sp_lev = objects[otyp].oc_level;
|
||||
incrnknow(i, 1);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*spell.c*/
|
||||
|
||||
Reference in New Issue
Block a user