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

Re: CF: see invisible bug



> The only problem is that players can see passwords by examining magic
> ears. So, I think putting back "show invisible" and fixing examining
> object code is easiest solution.

Scott> There are two ways to fix see invisible.  The first is to create a list
Scott> a of object types which aren't supposed to be revealed.  The second is
Scott> to create a new object state of ALWAYS_INVISIBLE.   I believe the second
Scott> is much better since then there can be truly invisible objects of every
Scott> type (say a map wants a monster to be unseen even after see_invisible was
Scott> cast).  

This means that map designer can set/clear this flag?
Then, I agree with the second solution.
Owing to new flag, map designers can make new kind of maps.

One problem is that you have to decide which object is ALWAYS_INVISIBLE
in natural. (This means how to make new lib/archetype file.)

Now I have a question.
When players invoke "see invisible", 
before invisible object may be visible
some kind of "flash" appeares at the field where the object is.
Does the "flash" appeared for ALWAYS_INVISIBLE objects?


Anyway, passwords of magic ear should not be visible by examining it.
Even if new flag is made, map designers can mistake to clear
ALWAYS_INVISIBLE flag of magic ears.
I think following patch is useful.

*** input.c.org	Fri Mar 13 19:30:45 1998
--- input.c	Fri Mar 13 19:33:54 1998
***************
*** 397,403 ****
    if(QUERY_FLAG(tmp, FLAG_MONSTER))
      examine_monster(op,tmp);
    if(tmp->msg && tmp->type != EXIT && tmp->type != BOOK && tmp->type != CORPSE
!      && !QUERY_FLAG(tmp, FLAG_WALK_ON)) {
      if (need_identify(tmp) && QUERY_FLAG(tmp, FLAG_IDENTIFIED))
        new_draw_info(NDI_UNIQUE, 0,op, "The object has a story:");
  #if 0 /* it might not be written on it */
--- 397,403 ----
    if(QUERY_FLAG(tmp, FLAG_MONSTER))
      examine_monster(op,tmp);
    if(tmp->msg && tmp->type != EXIT && tmp->type != BOOK && tmp->type != CORPSE
!      && tmp->type != MAGIC_EAR && !QUERY_FLAG(tmp, FLAG_WALK_ON)) {
      if (need_identify(tmp) && QUERY_FLAG(tmp, FLAG_IDENTIFIED))
        new_draw_info(NDI_UNIQUE, 0,op, "The object has a story:");
  #if 0 /* it might not be written on it */

--------------------------------------------------------------------------
Seikoh Nishita		      |	Dep't. of Information & Computer Sciences
			      |	Faculty of Engineering Science
[e-mail]		      |	Osaka University
s-nisita@ics.es.osaka-u.ac.jp |	Toyonaka, Osaka 560, Japan
[to unsubscribe etc., send mail to crossfire-request@ifi.uio.no]


References: