Re: Houses

From: Wout Mertens (Wout.Mertens@rug.ac.be)
Date: 04/15/96


On Sun, 14 Apr 1996, corey hoitsma wrote:

> I'm trying to write an ACMD(do_home) function...
> it pretty much follows the format of recall...
> and it would allow ppl with houses to goto them
> with the house command...
> BUT!
> How would I check to see if that person had a house?
> 'Cause if the player doesn't have a house and types home
> it core dumps (of course, since he doesn't have a house to goto),
> so I need to first check if the player has a house.. how would
> I do that?

Maybe this will help: (I made this some time ago, and I changed some save 
and load and newbie code, so I don't know if it is totally working on 
stock circle, but you can try, right? Besides, the house stuff should 
work ok)

#include "structs.h"
#include "utils.h"     /* And I'm not sure if these are enough */

sh_int get_home(struct char_data *ch)
{
  extern sh_int r_mortal_start_room;
  extern sh_int r_immort_start_room;
  extern sh_int r_frozen_start_room;
  sh_int load_room, i;

  if (PLR_FLAGGED(ch, PLR_FROZEN))
    return r_frozen_start_room;

  if ((load_room = real_room(GET_LOADROOM(ch))) < 0) {
    /* small glitch: if char has non-grouped followers only, he will
       not go to his house */
    if (!(AFF_FLAGGED(ch, AFF_GROUP) && (ch->master || ch->followers))
        && num_of_houses) { /* Not in or in one-member group */
      for (i = 0; i < num_of_houses; i++) {
        if (GET_IDNUM(ch) == house_control[i].owner) {
          return real_room(house_control[i].vnum);
        }
      }
    }
    if (GET_LEVEL(ch) >= LVL_IMMORT)
      return r_immort_start_room;
    else
      return r_mortal_start_room;
  } else
    return load_room;
}

Good luck,

Gekke Eekhoorn of BUG.



This archive was generated by hypermail 2b30 : 12/18/00 PST