/*
    Doomroom.m  Class definition.
    Copyright (C) 1995  David Flater.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include "cheezmud.h"

static long int snum = 0;

@implementation Doomroom

+ new
{
  id victim;
  char dir1[] = "nsewud", dir2[] = "snwedu", tname[20];
  self=[super new];
  sprintf (tname, "doom%ld", snum);
  [self describe: tname:
               "Temple of Doom":
               "Temple of Doom":
      "You are in a twisty little maze of video games, all alike."];

  /*  Link up! */
  if (!snum) {
    assert (victim = global_find ("underfloor", 1));
    [self setexit: "w": victim];
    [victim setexit: "e": self];
  }
  else {
    int dr, looper, v;
    v = (random() % 3) + 1;
    for (looper=0;looper<v;looper++) {
      do {
        sprintf (tname, "doom%ld", random() % snum);
        assert (victim = global_find (tname, 1));
        dr = random() % 6;
      } while ([victim dirquery: dir2[dr]] || [self dirquery: dir1[dr]]);
      assert (victim != self);
      [self setexit: &(dir1[dr]): victim];
      [victim setexit: &(dir2[dr]): self];
    }
  }
  snum++;

  return self;
}

- (char *) longdesc
{
  static char dd[160];
  sprintf (dd, "%s\nExits: ", longdesc);
  if (n)
    strcat (dd, " n");
  if (s)
    strcat (dd, " s");
  if (e)
    strcat (dd, " e");
  if (w)
    strcat (dd, " w");
  if (u)
    strcat (dd, " u");
  if (d)
    strcat (dd, " d");
  return dd;
}

@end