[CF-Devel] Bug report - The Divine Flower Bug

Peter Mardahl peterm at tonks.EECS.Berkeley.EDU
Sun May 13 17:02:44 CDT 2001


Ouch.  This is an important abuse.

Rather than apply your fix, how about disabling the stupid
flowers?

Many have complained about them.

PeterM
>
     
      Version: Current CVS version (0.98.0)
     
     >
     
     
     >
     
      Problem: 
     
     >
     
       Suppose player A is a follower of Mostrai, and B a follower of Sorig. B 
     
     >
     
      fails a priest casting and creates flowers all around. A takes some of these 
     
     >
     
      flowers and magically behaves like a follower of Sorig (can pray on Sorig 
     
     >
     
      altar but not on Mostrai's, gets Sorig's special stuff, etc) until dropping 
     
     >
     
      flowers or exiting the game (The divine flowers will never be saved).
     
     >
     
     
     >
     
      Source:
     
     >
     
       in gods.c, function determine_god: for players, the inventory is browsed 
     
     >
     
      until a 'divine' object is encountered. That object is the praying skill 90% 
     
     >
     
      of the time, but it may also be 'divine' flowers.
     
     >
     
     
     >
     
      Proposed solution:
     
     >
     
       Adding a skill check in the loop; the code:
     
     >
     
     
     >
     
          /* If we are player, lets search a bit harder for the god.  This
     
     >
     
           * is a fix for perceive self (before, we just looked at the active
     
     >
     
           * skill.)
     
     >
     
           */
     
     >
     
          if(op->type==PLAYER) {
     
     >
     
      	object *tmp;
     
     >
     
     
     >
     
      	for (tmp=op->inv; tmp!=NULL; tmp=tmp->below) {
     
     >
     
      	    if (tmp->exp_obj && tmp->exp_obj->title)
     
     >
     
      		return tmp->exp_obj->title;
     
     >
     
      	}
     
     >
     
          }
     
     >
     
     
     >
     
       will become:
     
     >
     
     
     >
     
          /* If we are player, lets search a bit harder for the god.  This
     
     >
     
           * is a fix for perceive self (before, we just looked at the active
     
     >
     
           * skill.)
     
     >
     
           */
     
     >
     
          if(op->type==PLAYER) {
     
     >
     
      	object *tmp;
     
     >
     
     
     >
     
      	for (tmp=op->inv; tmp!=NULL; tmp=tmp->below) {
     
     >
     
      	    if (tmp->type == SKILL)
     
     >
     
      	    {
     
     >
     
      	    	if (tmp->exp_obj && tmp->exp_obj->title)
     
     >
     
      			return tmp->exp_obj->title;
     
     >
     
      	    }
     
     >
     
      	}
     
     >
     
          }
     
     >
     
     
     >
     
       Note that the extra test should not slow the whole thing a lot, since for 
     
     >
     
      all non-skill objects, we only do one test.
     
     >
     
     
     >
     
      Commander Gros
     
     >
     
      Ad Dwarvam Aeternam !
     
     >
     
      _______________________________________________
     
     >
     
      crossfire-devel mailing list
     
     >
     
     
      crossfire-devel at lists.real-time.com
      
      
     >
     
     
      https://mailman.real-time.com/mailman/listinfo/crossfire-devel
      
      
     
    


More information about the crossfire mailing list