[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