/***************************************************************************
* file: spec_ass.c , Special module. Part of DIKUMUD *
* Usage: Procedures assigning function pointers. *
* Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
* *
* Copyright (C) 1992, 1993 Michael Chastain, Michael Quan, Mitchell Tse *
* Performance optimization and bug fixes by MERC Industries. *
* You can use our stuff in any way you like whatsoever so long as this *
* copyright notice remains intact. If you like it please drop a line *
* to mec@garnet.berkeley.edu. *
* *
* This is free software and you are benefitting. We hope that you *
* share your changes too. What goes around, comes around. *
***************************************************************************/
#include <stdio.h>
#include "structs.h"
#include "mob.h"
#include "obj.h"
#include "utils.h"
#include "db.h"
typedef int SPEC_FUN (struct char_data *ch, int cmd, char *argument);
extern struct room_data *world;
extern struct index_data *mob_index;
extern struct index_data *obj_index;
void boot_the_shops();
void assign_the_shopkeepers();
/* ********************************************************************
* Assignments *
******************************************************************** */
/* assign special procedures to mobiles */
void assign_mobiles(void)
{
SPEC_FUN cityguard;
SPEC_FUN guild;
SPEC_FUN guild_guard;
SPEC_FUN puff;
SPEC_FUN fido;
SPEC_FUN janitor;
SPEC_FUN mayor;
SPEC_FUN snake;
SPEC_FUN thief;
SPEC_FUN magic_user;
SPEC_FUN red_dragon;
SPEC_FUN blue_dragon;
SPEC_FUN green_dragon;
SPEC_FUN black_dragon;
SPEC_FUN white_dragon;
SPEC_FUN mud_school_adept;
SPEC_FUN adept;
SPEC_FUN brass_dragon;
SPEC_FUN baby_troll;
SPEC_FUN Fanatic_Hector;
SPEC_FUN Thalos_citizen;
SPEC_FUN Executioner;
SPEC_FUN MERCling;
SPEC_FUN train;
mob_index[real_mobile(1)].func = puff;
mob_index[real_mobile(200)].func = mud_school_adept;
mob_index[real_mobile(207)].func = adept;
mob_index[real_mobile(208)].func = adept;
mob_index[real_mobile(214)].func = fido;
mob_index[real_mobile(218)].func = train;
mob_index[real_mobile(219)].func = guild;
mob_index[real_mobile(250)].func = MERCling;
mob_index[real_mobile(1203)].func = Executioner;
mob_index[real_mobile(3007)].func = train;
mob_index[real_mobile(3060)].func = cityguard;
mob_index[real_mobile(3067)].func = cityguard;
mob_index[real_mobile(3061)].func = janitor;
mob_index[real_mobile(3062)].func = fido;
mob_index[real_mobile(3066)].func = fido;
mob_index[real_mobile(3020)].func = guild;
mob_index[real_mobile(3021)].func = guild;
mob_index[real_mobile(3022)].func = guild;
mob_index[real_mobile(3023)].func = guild;
/* mob_index[real_mobile(3024)].func = guild_guard;
mob_index[real_mobile(3025)].func = guild_guard;
mob_index[real_mobile(3026)].func = guild_guard;
mob_index[real_mobile(3027)].func = guild_guard;
*/
mob_index[real_mobile(3143)].func = mayor;
/* MIDEN'NIR */
mob_index[real_mobile(3500)].func = snake;
/* MORIA */
mob_index[real_mobile(4000)].func = snake;
mob_index[real_mobile(4001)].func = snake;
mob_index[real_mobile(4053)].func = snake;
mob_index[real_mobile(4103)].func = thief;
mob_index[real_mobile(4100)].func = magic_user;
mob_index[real_mobile(4102)].func = snake;
mob_index[real_mobile(4150)].func = blue_dragon;
mob_index[real_mobile(4151)].func = red_dragon;
mob_index[real_mobile(4152)].func = green_dragon;
mob_index[real_mobile(4153)].func = white_dragon;
mob_index[real_mobile(4154)].func = black_dragon;
mob_index[real_mobile(5005)].func = brass_dragon;
mob_index[real_mobile(5377)].func = white_dragon;
mob_index[real_mobile(4155)].func = thief;
mob_index[real_mobile(4157)].func = magic_user;
mob_index[real_mobile(4158)].func = snake;
/* mages and mage types */
mob_index[real_mobile(5200)].func = magic_user;
mob_index[real_mobile(7200)].func = magic_user;
mob_index[real_mobile(7201)].func = magic_user;
mob_index[real_mobile(7202)].func = magic_user;
/* more dragons */
mob_index[real_mobile(5050)].func = green_dragon;
mob_index[real_mobile(5377)].func = white_dragon;
mob_index[real_mobile(6112)].func = green_dragon;
mob_index[real_mobile(6302)].func = red_dragon;
mob_index[real_mobile(6302)].func = green_dragon;
mob_index[real_mobile(6316)].func = green_dragon;
mob_index[real_mobile(6317)].func = green_dragon;
mob_index[real_mobile(350)].func = green_dragon;
mob_index[real_mobile(1000)].func = magic_user; /* faerie dragon */
mob_index[real_mobile(5010)].func = red_dragon; /* draco lich */
/* SEWERS */
mob_index[real_mobile(7006)].func = snake;
mob_index[real_mobile(7040)].func = red_dragon;
/* FOREST */
mob_index[real_mobile(6113)].func = snake;
mob_index[real_mobile(6114)].func = snake;
mob_index[real_mobile(6910)].func = magic_user;
mob_index[real_mobile(3404)].func = magic_user;
mob_index[real_mobile(2828)].func = baby_troll;
/* Thalos */
mob_index[real_mobile(503)].func = cityguard;
mob_index[real_mobile(502)].func = Thalos_citizen;
mob_index[real_mobile(504)].func = Thalos_citizen;
mob_index[real_mobile(506)].func = Fanatic_Hector;
mob_index[real_mobile(507)].func = magic_user;
boot_the_shops();
assign_the_shopkeepers();
}
/* assign special procedures to objects */
void assign_objects(void)
{
int board(struct char_data *ch, int cmd, char *arg);
int board_general(struct char_data *ch, int cmd, char *arg);
obj_index[real_object(99)].func = board_general;
obj_index[real_object(3099)].func = board;
}
/* assign special procedures to rooms */
void assign_rooms(void)
{
int pet_shops(struct char_data *ch, int cmd, char *arg);
world[real_room(3031)].funct = pet_shops;
}