[CF-Devel] CVS update: crossfire/server
Andreas Vogl
andi.vogl at gmx.net
Wed Jan 10 11:05:12 CST 2001
Jan E. wrote:
>
On Tue, Jan 09, 2001 at 03:50:37PM -0800,
crossfire-cvs-admin at lists.sourceforge.net
> wrote:
>
> diff -u crossfire/server/apply.c:1.28 crossfire/server/apply.c:1.29
>
> --- crossfire/server/apply.c:1.28 Tue Dec 26 23:53:35 2000
>
> +++ crossfire/server/apply.c Tue Jan 9 15:50:37 2001
>
> @@ -1575,7 +1579,7 @@
>
> } else if(QUERY_FLAG(tmp,FLAG_STARTEQUIP) ||
RANDOM()%150-(2*SK_level(op)) <
>
> learn_spell[spells[tmp->stats.sp].cleric ? op->stats.Wis :
op->stats.Int]) {
>
> new_draw_info(NDI_UNIQUE, 0,op,"You succeed in learning the
spell!");
>
> - do_learn_spell (op, tmp->stats.sp, tmp->stats.Wis);
>
> + do_learn_spell (op, tmp->stats.sp, 0);
>
> #ifdef ALLOW_SKILLS /* xp gain to literacy for spell learning */
>
> if ( ! QUERY_FLAG (tmp, FLAG_STARTEQUIP))
>
> add_exp(op,calc_skill_exp(op,tmp));
>
>
Why this change? The purpose if tmp->stats.Wis is to support the
>
god_spellbook_*.arc objects as an alternative to the old-style
>
god_spelldirect_*.arc objects. god_intervention() inserts a spellbook
>
with stats.Wis = 1 in the players inventory. This seems to be broken
>
now.
The function "do_learn_spell" has the following format:
"extern void do_learn_spell (object *op, int spell, int special_prayer)".
If special_prayer is greater zero, the spell you learn is marked as
godgiven spell.
It is possible that the above change I've made was unneccessary. I first
thought the "tmp->stats.Wis" was the reason that *all* spells were marked
as godgiven. At second thought, I guess the true bug was fixed in the
following lines:
>
Index: crossfire/server/apply.c
>
diff -u crossfire/server/apply.c:1.28 crossfire/server/apply.c:1.29
>
--- crossfire/server/apply.c:1.28 Tue Dec 26 23:53:35 2000
>
+++ crossfire/server/apply.c Tue Jan 9 15:50:37 2001
>
@@ -1459,7 +1459,11 @@
>
op->contr->known_spells[op->contr->nrofknownspells++] = spell;
>
if (op->contr->nrofknownspells == 1)
>
op->contr->chosen_spell = spell;
>
- insert_special_prayer_mark (op, spell);
>
+
>
+ /* For godgiven spells the player gets a reminder-mark inserted,
>
+ that this spell must be removed on changing cults! */
>
+ if (special_prayer)
>
+ insert_special_prayer_mark (op, spell);
>
>
new_draw_info_format (NDI_UNIQUE, 0, op,
>
"Type 'bind cast %s", spells[spell].name);
So, please revert my changes to function "apply_spellbook" above, as
long as you know what you're doing.
Maybe make a short test afterwards. Some players might kill me if they
lost spells again, since I promised them this has been fixed now ;)
Andreas V.
More information about the crossfire
mailing list