Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CF: spell casting bug (minor patch)




> Samuli Tursas writes:
>
> Player goes into an area, leaves it and goes in the area again, and after
> that spellcasting monsters start to bug. Cone spells have a range of 1 
> square. If one area starts to bug, all areas do the same. This makes the game
> [snip]

	Yes. This effect has existed in all versions since 0.92.2. I 
	have been trying to hunt it down, but have not had much success.
	I agree that this is a severe bug. 

	Can you be more specific about how to make this bug appear? One
	of my problems with fixing this is that I can't usually get it to 
	happen.

	I did find one (minor) bug.. in SK_level. Basically, if a multi-square
	monster cast a spell from a non "head" square, the wrong value of
	the level would be inherited by the spell. I include a small,
	minor patch for this. NOTE: I have seen 1 hex spells cast by single-
	square creatures (ie beholder) so I DONT expect this is the root
	cause of the bug.

	Ill try to look into the teleporter bug. Can you recogmend a map
	which crashes often?

							-b.t.

*** skill_util.c	Tue Sep  3 03:50:39 1996
--- sk	Sat Sep 14 09:38:51 1996
***************
*** 1422,1432 ****
   * it should be used anytime a function needs to check the user's
   * level.
   */
  
  int SK_level(object *op) {  
!   int level = op->level;
  
  #ifdef ALLOW_SKILLS
    if(op->type==PLAYER && op->chosen_skill && op->chosen_skill->level!=0) {
  	level = op->chosen_skill->level;
    }
--- 1422,1432 ----
   * it should be used anytime a function needs to check the user's
   * level.
   */
  
  int SK_level(object *op) {  
!   int level = op->head?op->head->level:op->level;
  
  #ifdef ALLOW_SKILLS
    if(op->type==PLAYER && op->chosen_skill && op->chosen_skill->level!=0) {
  	level = op->chosen_skill->level;
    }