Promised thing, due thing :) Here's a patch to fix inscription skill, the spell writing part (text writing works fine, it seems). 2 things are fixed: * when succeeding in writing, nothing was inserted in inventory. That's because at some point the scroll was inserted in the spell, so could not be inserted into the player's inventory. Obviously, we want to insert the spell into the scroll, not the other way :) Doing this correctly inserts newly written scroll in inventory, and removes warning messages in log ^_- * if you write on a scroll which has nrof == 1, the server will crash. That's because we do: if (newscroll->inv) { remove_ob(newscroll->inv); free_object(newscroll->inv); Alas, remove_ob will clear newscroll->inv (op->env->inv), so free_object gets called with a NULL pointer... Something obviously bad & crashing :) So I stored the inv in a temporary pointer, to free it correctly. Nicolas 'Ryo' -------------- next part -------------- Index: server/skills.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/skills.c,v retrieving revision 1.45 diff -u -r1.45 skills.c --- server/skills.c 20 Dec 2003 16:13:40 -0000 1.45 +++ server/skills.c 3 Jan 2004 11:48:27 -0000 @@ -1203,12 +1203,13 @@ } if (newscroll->inv) { - remove_ob(newscroll->inv); - free_object(newscroll->inv); + object* inv = newscroll->inv; + remove_ob(inv); + free_object(inv); } tmp = get_object(); copy_object(chosen_spell, tmp); - insert_ob_in_ob(newscroll, tmp); + insert_ob_in_ob(tmp, newscroll); /* wait until finished manipulating the scroll before inserting it */ if (newscroll != scroll) -------------- next part -------------- _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel