/
Crimson/
Crimson/lib/PFILE-BACKUPS/
Crimson/lib/areas/
Crimson/lib/boards/
Crimson/lib/rentfiles/A-E/
Crimson/lib/rentfiles/F-J/
Crimson/lib/rentfiles/P-T/
/*************************************************************************
 *                                                                       * 
 *  File: tuscany.c                                                      *
 *  Special procedure handling Tuscany quest.                            *
 *                                                                       * 
 *************************************************************************/

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#include "structs.h"
#include "utility.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "constants.h"
#include "limits.h"
#include "act.h"
#include "ansi.h"

#define ARTIFACT_ACT "As the ancient artifact is dropped to the floor, a magical portal instantly\n\rappears and you feel that you are drawn into it by some unknown force.  You\n\rstart to feel uneasy as you realize that you must have disturbed the\n\ralmighty gods.\n\r" 

#define PORTAL_ACT "You finally summoned enough courage to enter the portal.  You feel a sudden\n\rchill goes through your body and that really makes you shiver.........\n\r"   

#define DESTINATION 15847
#define ARTIFACT    15687
#define PORTAL      15688

int chamber_of_gods(struct char_data *ch, int cmd, char *arg)
{
  /*
    Chamber of Gods               : room 15746
    Entrance to the Halls of Gods : room 15847

    The Ancient Artifact : object 15687
    The Magic Portal     : object 15688
    */

  struct obj_data *obj;
  struct char_data *leader;
  struct follow_type *fol;
  char buf[100];

  if (cmd == CMD_DROP) {
    do_drop(ch, arg, cmd); 
    if ((obj=get_obj_in_list_virtual(ARTIFACT, world[ch->in_room].contents))) {
      if (GET_LEVEL(ch) < IMO_LEV) {
	ansi_act("Sorry, you are too inexperienced to meet the Gods now!",
		 FALSE, fol->follower, 0, 0, TO_CHAR, CLR_ERROR);
	return(FALSE);
      }
      extract_obj(obj);
      ansi_act(ARTIFACT_ACT, FALSE, ch, 0, 0, TO_ROOM, WHITE);      
      obj = read_object(PORTAL, VIRTUAL);
      obj_to_room(obj, ch->in_room);
      return(TRUE);
    }
  }

  if ((cmd == 7) 
      && (obj=get_obj_in_list_virtual(PORTAL, world[ch->in_room].contents))) { 
    /* ENTER command */
      if (GET_LEVEL(ch) < IMO_LEV) {
	ansi_act("Sorry, you are too inexperienced to meet the Gods now!",
		 FALSE, fol->follower, 0, 0, TO_CHAR, CLR_ERROR);
	return(FALSE);
      }
      extract_obj(obj);
      ansi_act(PORTAL_ACT, FALSE, fol->follower, 0, 0, TO_CHAR, WHITE);
      char_from_room(ch);
      char_to_room(ch, real_room(DESTINATION));
      do_gossip(ch, "YES! I have solved the Tuscany quest!", 232);
      do_look(ch, "\0", 15);
      
      sprintf(buf,"QUEST: %s visited the Halls of Gods.", GET_NAME(ch));
      log(buf);
      
      if (!(leader = ch->master))
	leader = ch;

      for(fol = leader->followers; fol; fol = fol->next)
        if (!IS_NPC(fol->follower) && IS_AFFECTED(fol->follower, AFF_GROUP)) {
	  if (GET_LEVEL(fol->follower) < IMO_LEV) 
	    ansi_act("Sorry, you are too inexperienced to meet the Gods now!",
		     FALSE, fol->follower, 0, 0, TO_CHAR, CLR_ERROR);
	  else {
	    ansi_act(PORTAL_ACT, FALSE, fol->follower, 0, 0, TO_CHAR, WHITE);
	    char_from_room(fol->follower);
	    char_to_room(fol->follower, real_room(DESTINATION));
	    do_look(fol->follower, "\0", 15);
	  }
	}
      return(TRUE);
    }
  return(FALSE);
}