circlemud_squared_0.5.153/cnf/
circlemud_squared_0.5.153/etc/
circlemud_squared_0.5.153/etc/etc/
circlemud_squared_0.5.153/etc/house/
circlemud_squared_0.5.153/etc/misc/
circlemud_squared_0.5.153/etc/plralias/A-E/
circlemud_squared_0.5.153/etc/plralias/F-J/
circlemud_squared_0.5.153/etc/plralias/K-O/
circlemud_squared_0.5.153/etc/plralias/P-T/
circlemud_squared_0.5.153/etc/plralias/U-Z/
circlemud_squared_0.5.153/etc/plralias/ZZZ/
circlemud_squared_0.5.153/etc/plrobjs/
circlemud_squared_0.5.153/etc/plrobjs/A-E/
circlemud_squared_0.5.153/etc/plrobjs/F-J/
circlemud_squared_0.5.153/etc/plrobjs/K-O/
circlemud_squared_0.5.153/etc/plrobjs/P-T/
circlemud_squared_0.5.153/etc/plrobjs/U-Z/
circlemud_squared_0.5.153/etc/plrobjs/ZZZ/
circlemud_squared_0.5.153/etc/text/
circlemud_squared_0.5.153/etc/text/help/
circlemud_squared_0.5.153/src/util/
circlemud_squared_0.5.153/src/util/worldconv/
/* ************************************************************************
*   File: spec_assign.c                                 Part of CircleMUD *
*  Usage: Functions to assign function pointers to objs/mobs/rooms        *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */

#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "db.h"
#include "interpreter.h"
#include "utils.h"
#include "log.h"
#include "base.h"
#include "dao.h"
#include "item.h"
#include "room.h"
#include "mobile.h"

/* external globals */
extern int dts_are_dumps;
extern int mini_mud;

/* external functions */
SPECIAL(dump);
SPECIAL(pet_shops);
SPECIAL(postmaster);
SPECIAL(cityguard);
SPECIAL(receptionist);
SPECIAL(cryogenicist);
SPECIAL(guild_guard);
SPECIAL(guild);
SPECIAL(puff);
SPECIAL(fido);
SPECIAL(janitor);
SPECIAL(mayor);
SPECIAL(snake);
SPECIAL(thief);
SPECIAL(magic_user);
SPECIAL(bank);
SPECIAL(gen_board);
void assign_kings_castle(void);

/* local functions */
void assign_mobiles(void);
void assign_objects(void);
void assign_rooms(void);

/* functions to perform assignments */

void ASSIGNMOB(char *segVnum, SPECIAL(fname)) {
  charData_t *mob = charData_findMobilePrototype(segVnum);

  if (mob != NULL)
    mob->func = fname;
  else if (!mini_mud)
    log("SYSERR: Attempt to assign spec to non-existant mobile '%s'", segVnum);
}

void ASSIGNITEM(char *segVnum, SPECIAL(fname)) {
  itemData_t *obj = itemData_find(segVnum);

  if (obj != NULL)
    obj->func = fname;
  else if (!mini_mud)
    log("SYSERR: Attempt to assign spec to non-existant object '%s'", segVnum);
}

void ASSIGNROOM(char *segVnum, SPECIAL(fname)) {
  roomData_t *room = roomData_find(segVnum);

  if (room != NULL)
    room->func = fname;
  else if (!mini_mud)
    log("SYSERR: Attempt to assign spec to non-existant room '%s'", segVnum);
}


/* ********************************************************************
*  Assignments                                                        *
******************************************************************** */

/* assign special procedures to mobiles */
void assign_mobiles(void)
{
  assign_kings_castle();

  ASSIGNMOB("limbo:1", puff);

  /* Immortal Zone */
  ASSIGNMOB("godSimplex:1200", receptionist);
  ASSIGNMOB("godSimplex:1201", postmaster);
  ASSIGNMOB("godSimplex:1202", janitor);

  /* Midgaard */
  ASSIGNMOB("midgaardNorth:3005", receptionist);
  ASSIGNMOB("midgaardNorth:3010", postmaster);
  ASSIGNMOB("midgaardNorth:3020", guild);
  ASSIGNMOB("midgaardNorth:3021", guild);
  ASSIGNMOB("midgaardNorth:3022", guild);
  ASSIGNMOB("midgaardNorth:3023", guild);
  ASSIGNMOB("midgaardNorth:3024", guild_guard);
  ASSIGNMOB("midgaardNorth:3025", guild_guard);
  ASSIGNMOB("midgaardNorth:3026", guild_guard);
  ASSIGNMOB("midgaardNorth:3027", guild_guard);
  ASSIGNMOB("midgaardNorth:3059", cityguard);
  ASSIGNMOB("midgaardNorth:3060", cityguard);
  ASSIGNMOB("midgaardNorth:3061", janitor);
  ASSIGNMOB("midgaardNorth:3062", fido);
  ASSIGNMOB("midgaardNorth:3066", fido);
  ASSIGNMOB("midgaardNorth:3067", cityguard);
  ASSIGNMOB("midgaardNorth:3068", janitor);
  ASSIGNMOB("midgaardNorth:3095", cryogenicist);
  ASSIGNMOB("midgaardNorth:3105", mayor);

  /* MORIA */
  ASSIGNMOB("moria:4000", snake);
  ASSIGNMOB("moria:4001", snake);
  ASSIGNMOB("moria:4053", snake);
  ASSIGNMOB("moria:4100", magic_user);
  ASSIGNMOB("moria:4102", snake);
  ASSIGNMOB("moria:4103", thief);

  /* Redferne's */
  ASSIGNMOB("redferne:7900", cityguard);

  /* PYRAMID */
  ASSIGNMOB("pyramid:5300", snake);
  ASSIGNMOB("pyramid:5301", snake);
  ASSIGNMOB("pyramid:5304", thief);
  ASSIGNMOB("pyramid:5305", thief);
  ASSIGNMOB("pyramid:5309", magic_user); /* should breath fire */
  ASSIGNMOB("pyramid:5311", magic_user);
  ASSIGNMOB("pyramid:5313", magic_user); /* should be a cleric */
  ASSIGNMOB("pyramid:5314", magic_user); /* should be a cleric */
  ASSIGNMOB("pyramid:5315", magic_user); /* should be a cleric */
  ASSIGNMOB("pyramid:5316", magic_user); /* should be a cleric */
  ASSIGNMOB("pyramid:5317", magic_user);

  /* High Tower Of Sorcery */
  ASSIGNMOB("towerOfMagic:2501", magic_user); /* should likely be cleric */
  ASSIGNMOB("towerOfMagic:2504", magic_user);
  ASSIGNMOB("towerOfMagic:2507", magic_user);
  ASSIGNMOB("towerOfMagic:2508", magic_user);
  ASSIGNMOB("towerOfMagic:2510", magic_user);
  ASSIGNMOB("towerOfMagic:2511", thief);
  ASSIGNMOB("towerOfMagic:2514", magic_user);
  ASSIGNMOB("towerOfMagic:2515", magic_user);
  ASSIGNMOB("towerOfMagic:2516", magic_user);
  ASSIGNMOB("towerOfMagic:2517", magic_user);
  ASSIGNMOB("towerOfMagic:2518", magic_user);
  ASSIGNMOB("towerOfMagic:2520", magic_user);
  ASSIGNMOB("towerOfMagic:2521", magic_user);
  ASSIGNMOB("towerOfMagic:2522", magic_user);
  ASSIGNMOB("towerOfMagic:2523", magic_user);
  ASSIGNMOB("towerOfMagic:2524", magic_user);
  ASSIGNMOB("towerOfMagic:2525", magic_user);
  ASSIGNMOB("towerOfMagic:2526", magic_user);
  ASSIGNMOB("towerOfMagic:2527", magic_user);
  ASSIGNMOB("towerOfMagic:2528", magic_user);
  ASSIGNMOB("towerOfMagic:2529", magic_user);
  ASSIGNMOB("towerOfMagic:2530", magic_user);
  ASSIGNMOB("towerOfMagic:2531", magic_user);
  ASSIGNMOB("towerOfMagic:2532", magic_user);
  ASSIGNMOB("towerOfMagic:2533", magic_user);
  ASSIGNMOB("towerOfMagic:2534", magic_user);
  ASSIGNMOB("towerOfMagic:2536", magic_user);
  ASSIGNMOB("towerOfMagic:2537", magic_user);
  ASSIGNMOB("towerOfMagic:2538", magic_user);
  ASSIGNMOB("towerOfMagic:2540", magic_user);
  ASSIGNMOB("towerOfMagic:2541", magic_user);
  ASSIGNMOB("towerOfMagic:2548", magic_user);
  ASSIGNMOB("towerOfMagic:2549", magic_user);
  ASSIGNMOB("towerOfMagic:2552", magic_user);
  ASSIGNMOB("towerOfMagic:2553", magic_user);
  ASSIGNMOB("towerOfMagic:2554", magic_user);
  ASSIGNMOB("towerOfMagic:2556", magic_user);
  ASSIGNMOB("towerOfMagic:2557", magic_user);
  ASSIGNMOB("towerOfMagic:2559", magic_user);
  ASSIGNMOB("towerOfMagic:2560", magic_user);
  ASSIGNMOB("towerOfMagic:2562", magic_user);
  ASSIGNMOB("towerOfMagic:2564", magic_user);

  /* SEWERS */
  ASSIGNMOB("sewerFirst:7006", snake);
  ASSIGNMOB("sewerFirst:7009", magic_user);
  ASSIGNMOB("sewerMaze:7200", magic_user);
  ASSIGNMOB("sewerMaze:7201", magic_user);
  ASSIGNMOB("sewerMaze:7202", magic_user);

  /* FOREST */
  ASSIGNMOB("haonDorDark:6112", magic_user);
  ASSIGNMOB("haonDorDark:6113", snake);
  ASSIGNMOB("haonDorDark:6114", magic_user);
  ASSIGNMOB("haonDorDark:6115", magic_user);
  ASSIGNMOB("haonDorDark:6116", magic_user); /* should be a cleric */
  ASSIGNMOB("haonDorDark:6117", magic_user);

  /* ARACHNOS */
  ASSIGNMOB("arachnos:6302", magic_user);
  ASSIGNMOB("arachnos:6309", magic_user);
  ASSIGNMOB("arachnos:6312", magic_user);
  ASSIGNMOB("arachnos:6314", magic_user);
  ASSIGNMOB("arachnos:6315", magic_user);

  /* Desert */
  ASSIGNMOB("desert:5004", magic_user);
  ASSIGNMOB("desert:5005", guild_guard); /* brass dragon */
  ASSIGNMOB("desert:5010", magic_user);
  ASSIGNMOB("desert:5014", magic_user);

  /* Drow City */
  ASSIGNMOB("drow:5103", magic_user);
  ASSIGNMOB("drow:5104", magic_user);
  ASSIGNMOB("drow:5107", magic_user);
  ASSIGNMOB("drow:5108", magic_user);

  /* Old Thalos */
  ASSIGNMOB("thalos:5200", magic_user);
  ASSIGNMOB("thalos:5201", magic_user);
  ASSIGNMOB("thalos:5209", magic_user);

  /* New Thalos */
/* 5481 - Cleric (or Mage... but he IS a high priest... *shrug*) */
  ASSIGNMOB("thalosNew:5404", receptionist);
  ASSIGNMOB("thalosNew:5421", magic_user);
  ASSIGNMOB("thalosNew:5422", magic_user);
  ASSIGNMOB("thalosNew:5423", magic_user);
  ASSIGNMOB("thalosNew:5424", magic_user);
  ASSIGNMOB("thalosNew:5425", magic_user);
  ASSIGNMOB("thalosNew:5426", magic_user);
  ASSIGNMOB("thalosNew:5427", magic_user);
  ASSIGNMOB("thalosNew:5428", magic_user);
  ASSIGNMOB("thalosNew:5434", cityguard);
  ASSIGNMOB("thalosNew:5440", magic_user);
  ASSIGNMOB("thalosNew:5455", magic_user);
  ASSIGNMOB("thalosNew:5461", cityguard);
  ASSIGNMOB("thalosNew:5462", cityguard);
  ASSIGNMOB("thalosNew:5463", cityguard);
  ASSIGNMOB("thalosNew:5482", cityguard);
/*
5400 - Guildmaster (Mage)
5401 - Guildmaster (Cleric)
5402 - Guildmaster (Warrior)
5403 - Guildmaster (Thief)
5456 - Guildguard (Mage)
5457 - Guildguard (Cleric)
5458 - Guildguard (Warrior)
5459 - Guildguard (Thief)
*/

  /* ROME */
  ASSIGNMOB("rome:12009", magic_user);
  ASSIGNMOB("rome:12018", cityguard);
  ASSIGNMOB("rome:12020", magic_user);
  ASSIGNMOB("rome:12021", cityguard);
  ASSIGNMOB("rome:12025", magic_user);
  ASSIGNMOB("rome:12030", magic_user);
  ASSIGNMOB("rome:12031", magic_user);
  ASSIGNMOB("rome:12032", magic_user);

  /* King Welmar's Castle (not covered in castle.c) */
  ASSIGNMOB("welmarCastle:15015", thief);      /* Ergan... have a better idea? */
  ASSIGNMOB("welmarCastle:15032", magic_user); /* Pit Fiend, have something better?  Use it */

  /* DWARVEN KINGDOM */
  ASSIGNMOB("dwarven:6500", cityguard);
  ASSIGNMOB("dwarven:6502", magic_user);
  ASSIGNMOB("dwarven:6509", magic_user);
  ASSIGNMOB("dwarven:6516", magic_user);
}



/* assign special procedures to objects */
void assign_objects(void)
{
  ASSIGNITEM("midgaardNorth:3096", gen_board);	/* social board */
  ASSIGNITEM("midgaardNorth:3097", gen_board);	/* freeze board */
  ASSIGNITEM("midgaardNorth:3098", gen_board);	/* immortal board */
  ASSIGNITEM("midgaardNorth:3099", gen_board);	/* mortal board */

  ASSIGNITEM("midgaardNorth:3034", bank);	/* atm */
  ASSIGNITEM("midgaardNorth:3036", bank);	/* cashcard */
}



/* assign special procedures to rooms */
void assign_rooms(void)
{
/*  roomVnum_t i; */

  ASSIGNROOM("midgaardNorth:3030", dump);
  ASSIGNROOM("midgaardNorth:3031", pet_shops);

/*
 * Port?  Remove?
 * 
  if (dts_are_dumps)
    for (i = 0; i <= top_of_world; i++)
      if (ROOM_FLAGGED(i, ROOM_DEATH))
	world[i].func = dump;
 */
}