/
Archipelago/
Archipelago/doc/
Archipelago/lib/misc/
Archipelago/lib/plrobjs/
Archipelago/lib/plrobjs/P-T/
Archipelago/lib/world/mob/
Archipelago/lib/world/obj/
Archipelago/lib/world/shp/
Archipelago/lib/world/wld/
Archipelago/lib/world/zon/
Archipelago/slave/
/* ************************************************************************
*   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 by the Trustees of the Johns Hopkins University     *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */
/* Archipelago changes by Alastair J. Neil Copyright (C) 1993, 94, 95, 96 */

#include <stdio.h>
#include "structs.h"
#include "db.h"
#include "interpreter.h"
#include "utils.h"

extern struct room_data *world;
extern int top_of_world;
extern struct index_data *mob_index;
extern struct index_data *obj_index;

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

/* assign special procedures to mobiles */
void	assign_mobiles(void)
{
    SPECIAL(mime);
    SPECIAL(postmaster);
    SPECIAL(gaspode);
    SPECIAL(cityguard);
    SPECIAL(receptionist);
    SPECIAL(c_receptionist);   
    SPECIAL(cryogenicist);
    SPECIAL(blacksmith);
    SPECIAL(lorshroompest);
    SPECIAL(warrior);
    SPECIAL(leviathan);
    SPECIAL(satyr_toadie);
    SPECIAL(princess);    
/*   SPECIAL(guild_guard); */
    SPECIAL(tomcat);
    SPECIAL(guild);    
    SPECIAL(puff);
    SPECIAL(fido);
    SPECIAL(garm);
    SPECIAL(satyrguard);        
    SPECIAL(janitor);
    SPECIAL(mayor);
    SPECIAL(snake);
    SPECIAL(thief);
    SPECIAL(tax);
    SPECIAL(puppy);
    SPECIAL(kitten);
    SPECIAL(brass_dragon);
    SPECIAL(dragon);    
    SPECIAL(ticket_collector);
    SPECIAL(armourer);
    SPECIAL(librarian);
    SPECIAL(magician);
    SPECIAL(bianca);
    SPECIAL(water_dragon);
    SPECIAL(pigeon);
    SPECIAL(diels);
    SPECIAL(banana);
    SPECIAL(guild_guard);
    SPECIAL(blue_caterpillar);
    SPECIAL(satyr_skald);
    SPECIAL(pet_shop);
    
    ASSIGNMOB(1, puff);
/* Lamman*/
    ASSIGNMOB(1016, warrior);
    ASSIGNMOB(1840, warrior);
    ASSIGNMOB(1832, armourer);
    ASSIGNMOB(2079, princess);    
    ASSIGNMOB(2036, gaspode);
    ASSIGNMOB(2022, janitor);
    ASSIGNMOB(2015, guild_guard);
    ASSIGNMOB(2012, guild);
    ASSIGNMOB(2083, guild);
    ASSIGNMOB(2011, guild);
    ASSIGNMOB(1206, guild);    
    ASSIGNMOB(2080, guild);    
    ASSIGNMOB(2013, guild);
    ASSIGNMOB(2014, guild);
    ASSIGNMOB(2054, guild);
    ASSIGNMOB(2070, guild);    
    ASSIGNMOB(1800, guild);
    ASSIGNMOB(1219, guild);
    ASSIGNMOB(1221, guild);
    ASSIGNMOB(1222, guild);
    ASSIGNMOB(1223, guild);
    ASSIGNMOB(2067, guild);            
    ASSIGNMOB(2069, pet_shop);
    ASSIGNMOB(2007, receptionist);
    ASSIGNMOB(2019, tax);
    ASSIGNMOB(2035  , thief);
    ASSIGNMOB(1823  , thief);    
    ASSIGNMOB(2056  , thief);
    ASSIGNMOB(2038  , thief);
    ASSIGNMOB(2039  , thief);
    ASSIGNMOB(2043  , thief);
    ASSIGNMOB(2047  , thief);
    ASSIGNMOB(2020, cityguard);
    ASSIGNMOB(2071, cityguard);
    ASSIGNMOB(2068, cityguard);    
    ASSIGNMOB(2021, cityguard);
    ASSIGNMOB(2028, cityguard);
    ASSIGNMOB(2040, cityguard);
    ASSIGNMOB(2027, cityguard);
    ASSIGNMOB(2050, cityguard);
    ASSIGNMOB(2055, cityguard);
    ASSIGNMOB(2010, postmaster);
    ASSIGNMOB(2031, puppy);
    ASSIGNMOB(2024, warrior);
    ASSIGNMOB(1840, warrior);   
    ASSIGNMOB(2060, tomcat);
    ASSIGNMOB(2030, kitten);    
    ASSIGNMOB(2051, blacksmith);
    ASSIGNMOB(2052, blacksmith);

}



/* assign special procedures to objects */
void	assign_objects(void)
{
   SPECIAL(bank);
   SPECIAL(gen_board);
   SPECIAL(animate_book);
   
   ASSIGNOBJ(2096, gen_board);  /* builders board */
   ASSIGNOBJ(2097, gen_board);  /* bugs board */
   ASSIGNOBJ(2098, gen_board);	/* immortal board */
   ASSIGNOBJ(2099, gen_board);  /* mortal board */
   ASSIGNOBJ(1227, gen_board);  /* builder2 board */
   ASSIGNOBJ(1241, gen_board);  /* Staff Meeting */   

}



/* assign special procedures to rooms */
void	assign_rooms(void)
{
    SPECIAL(spinner);
    SPECIAL(ferry);
    SPECIAL(to_arg_isle);
    extern int dts_are_dumps;
    int i;
    
    SPECIAL(dump);
    SPECIAL(bank);
    SPECIAL(pet_shops);
    SPECIAL(echo_room);

    ASSIGNROOM(2042, bank);
    
   if (dts_are_dumps)
      for (i = 0; i < top_of_world; i++)
         if (IS_SET(world[i].room_flags, DEATH))
            world[i].funct = dump;
}