[CF-Devel] Monsters not using wands/rods/horns

crossfire-devel at archives.real-time.com crossfire-devel at archives.real-time.com
Tue May 11 23:54:23 CDT 2004


Nicolas Weeger wrote:
>
     
      Hello.
     
     >
     
     
     >
     
      I've noticed some monsters don't use wands/rods/horns anymore.
     
     >
     
      Tracking the issue, I found some hints:
     
     >
     
     
     >
     
      * monster_check_apply, which is used when a just generated item is put 
     
     >
     
      in monster inventory, will use manual_apply on the rod/wand/horn. Which 
     
     >
     
      checks for skill, ie 'use magic item'. But sometimes the monster doesn't 
     
     >
     
      have it yet (treasure list _after_ current one).
     
     >
     
      * even if the monster has it 'FLAG_CAN_USE_SKILL' is not set, so skill 
     
     >
     
      can't be used.
     
     >
     
      * also, change_skill is called for monsters when applying item, thus 
     
     >
     
      crash (who->contr == NULL)
     
     
  It may make sense to change the logic a bit - such that we don't set all the 
flags for the monster until after all the monsters treasure has been generated.

  That said, there is some amount of leftover cruft in terms of objects monsters 
can and can not use.  With the body_info code, this can arguably be removed (at 
one point, the can_use flags were the only real way to tell that a monster had a 
arm for example).  The only case where it may still show up is cases where a 
creature is 'humanoid' but not considered smart enough to use sophisticated 
items like wands or rods.

>
     
     
     >
     
     
     >
     
      I attached a patch that enables monsters to fire their favorite 
     
     >
     
      wand/horn/rod :)
     
     >
     
     
     >
     
      It's dirty, and probably has some redundance (like 'FLAG_APPLIED' is 
     
     >
     
      set, but never really tested)
     
     
  I notice some code was lost, like checking the type of spell being fired and 
adjusting direction if it is a zero range spell.  But at a quick glance, it 
looks OK, but probably should be thoroughly tested.

>
     
     
     >
     
      Basically i grabbed the wand/rod firing code from 
     
     >
     
      server/player.c:fire_misc_object( ), and pasted it in 
     
     >
     
      server/monster.c:monster_use_range( ) to actually fire rod/bow.
     
     >
     
     
     >
     
      I think we should, at some point, use only one logic for players / 
     
     >
     
      monsters when firing bow/range, and for skills/spells too.
     
     >
     
      Though java editor can't link between 'can use wands' flag and the 'use 
     
     >
     
      magic item' skill which is required, so that isn't great.
     
     
  Probably using the same logic makes sense, except as mentioned above, if there 
are cases where a creature is deemed too stupid yet has a hand or whatever.

  But a lot of the problem may be that many monsters need to get updated 
treasurelists for the skills they do have.


_______________________________________________
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