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

Re: CF: Angels, Ghosts and a Spear (speed+56)



Further information on the Spear (speed+56) ...

Eskimo mythology suggests that a weapon will be more powerful if
it has moved around a lot.  [Larry Niven, ]

I reproduced the problem again, this time I took out a new character
into the beginner's tower south of the entry point, and simply picked up
everything and used "throwing" to throw it at any monster.  The result
was a fair number of objects that, when identified, had a high speed
attribute.

Now, I also experienced an interesting side-effect.  If a monster picked
up the high speed object, they would move very fast.  Obvious when you
think about it ... I'd just not thrown things that much before.

Have you noticed that Madmen have a sort of berserker mode ... they
throw lots of things, and then one of them would go really fast,
wobbling back and forth like crazy.  I conclude the monster picked up
the high speed object.

So for the moment I'll be finding a nice poleaxe somewhere, throwing
it around a bit and then adopting it.  ;-)

Steve Unruh (sunruh@jump.net) suggested the following Angel/Ghost fix.

from server/monster.c

int move_object(object *op, int dir) {
  int newx = op->x+freearr_x[dir];
  int newy = op->y+freearr_y[dir];
  object *tmp;
  if(blocked_link(op, newx, newy)) /* Not all features from blocked_two
yet */
    return 0;                      /* (Not efficient enough yet) */
  if(op->more != NULL && !move_object(op->more, dir))
    return 0;
  if(op->will_apply&4)
    check_earthwalls(op,newx,newy);
  if(op->will_apply&8)
    check_doors(op,newx,newy);
  if(op->head)
    return 1;
/* fix by Steve Unruh */
if(!QUERY_FLAG(op,FLAG_REMOVED))
  remove_ob(op);
  for(tmp = op; tmp != NULL; tmp = tmp->more)
    tmp->x+=freearr_x[dir], tmp->y+=freearr_y[dir];
  insert_ob_in_map(op, op->map);
  return 1;
}

-- 
James Cameron                                    (cameron@stl.dec.com)
Digital Equipment Corporation (Australia) Pty. Ltd. A.C.N. 000 446 800
[to unsubscribe etc., send mail to crossfire-request@ifi.uio.no]