/* ************************************************************************ * 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 <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 int mini_mud; extern struct index_data *mob_index; extern struct index_data *obj_index; int do_guild(struct char_data *ch, void *me, int cmd, char *argument, int skilltype); /* functions to perform assignments */ void ASSIGNMOB(int mob, SPECIAL(fname)) { if (real_mobile(mob) >= 0) mob_index[real_mobile(mob)].func = fname; else if (!mini_mud) { sprintf(buf, "SYSERR: Attempt to assign spec to non-existant mob #%d", mob); log(buf); } } void ASSIGNOBJ(int obj, SPECIAL(fname)) { if (real_object(obj) >= 0) obj_index[real_object(obj)].func = fname; else if (!mini_mud) { sprintf(buf, "SYSERR: Attempt to assign spec to non-existant obj #%d", obj); log(buf); } } void ASSIGNROOM(int room, SPECIAL(fname)) { if (real_room(room) >= 0) world[real_room(room)].func = fname; else if (!mini_mud) { sprintf(buf, "SYSERR: Attempt to assign spec to non-existant rm. #%d", room); log(buf); } } /* ******************************************************************** * Assignments * ******************************************************************** */ /* assign special procedures to mobiles */ void assign_mobiles(void) { SPECIAL(postmaster); SPECIAL(cityguard); SPECIAL(receptionist); SPECIAL(cryogenicist); SPECIAL(guild_guard); SPECIAL(mageguild); SPECIAL(clericguild); SPECIAL(fighterguild); SPECIAL(thiefguild); SPECIAL(othersguild); SPECIAL(puff); SPECIAL(fido); SPECIAL(janitor); SPECIAL(mayor); SPECIAL(snake); SPECIAL(thief); SPECIAL(magic_user); SPECIAL(cleric); SPECIAL(recruiter); SPECIAL(trainer); void assign_kings_castle(void); assign_kings_castle(); /* Immortal Zone */ ASSIGNMOB(1, puff); ASSIGNMOB(30, receptionist); ASSIGNMOB(31, postmaster); ASSIGNMOB(32, janitor); /* MOB POOL */ ASSIGNMOB(300, trainer); ASSIGNMOB(101, magic_user); ASSIGNMOB(102, magic_user); ASSIGNMOB(103, magic_user); ASSIGNMOB(104, magic_user); ASSIGNMOB(208, fido); ASSIGNMOB(1178, magic_user); /* Capitol */ ASSIGNMOB(4000, postmaster); ASSIGNMOB(4005, receptionist); ASSIGNMOB(4006, mageguild); ASSIGNMOB(4007, clericguild); ASSIGNMOB(4008, othersguild); /* druid guild */ ASSIGNMOB(4009, thiefguild); /* thieves guild */ ASSIGNMOB(4010, fighterguild); /* fighter guild */ ASSIGNMOB(4011, guild_guard); ASSIGNMOB(4012, guild_guard); ASSIGNMOB(4013, guild_guard); ASSIGNMOB(4014, guild_guard); ASSIGNMOB(4015, guild_guard); /* thief */ ASSIGNMOB(4017, recruiter); ASSIGNMOB(4018, cityguard); ASSIGNMOB(4019, guild_guard); /* embassy */ /* Midgaard ASSIGNMOB(3005, receptionist); ASSIGNMOB(3010, postmaster); ASSIGNMOB(3020, guild); ASSIGNMOB(3021, guild); ASSIGNMOB(3022, guild); ASSIGNMOB(3023, guild); ASSIGNMOB(3024, guild_guard); ASSIGNMOB(3025, guild_guard); ASSIGNMOB(3026, guild_guard); ASSIGNMOB(3027, guild_guard); ASSIGNMOB(3059, cityguard); ASSIGNMOB(3060, cityguard); ASSIGNMOB(3061, janitor); ASSIGNMOB(3062, fido); ASSIGNMOB(3066, fido); ASSIGNMOB(3067, cityguard); ASSIGNMOB(3068, janitor); ASSIGNMOB(3095, cryogenicist); ASSIGNMOB(3105, mayor); MORIA ASSIGNMOB(4000, snake); ASSIGNMOB(4001, snake); ASSIGNMOB(4053, snake); ASSIGNMOB(4100, magic_user); ASSIGNMOB(4102, snake); ASSIGNMOB(4103, thief); Redferne's ASSIGNMOB(7900, cityguard); PYRAMID ASSIGNMOB(5300, snake); ASSIGNMOB(5301, snake); ASSIGNMOB(5304, thief); ASSIGNMOB(5305, thief); ASSIGNMOB(5309, magic_user); ASSIGNMOB(5311, magic_user); ASSIGNMOB(5313, magic_user); ASSIGNMOB(5314, magic_user); ASSIGNMOB(5315, magic_user); ASSIGNMOB(5316, magic_user); ASSIGNMOB(5317, magic_user); High Tower Of Sorcery ASSIGNMOB(2501, magic_user); ASSIGNMOB(2504, magic_user); ASSIGNMOB(2507, magic_user); ASSIGNMOB(2508, magic_user); ASSIGNMOB(2510, magic_user); ASSIGNMOB(2511, thief); ASSIGNMOB(2514, magic_user); ASSIGNMOB(2515, magic_user); ASSIGNMOB(2516, magic_user); ASSIGNMOB(2517, magic_user); ASSIGNMOB(2518, magic_user); ASSIGNMOB(2520, magic_user); ASSIGNMOB(2521, magic_user); ASSIGNMOB(2522, magic_user); ASSIGNMOB(2523, magic_user); ASSIGNMOB(2524, magic_user); ASSIGNMOB(2525, magic_user); ASSIGNMOB(2526, magic_user); ASSIGNMOB(2527, magic_user); ASSIGNMOB(2528, magic_user); ASSIGNMOB(2529, magic_user); ASSIGNMOB(2530, magic_user); ASSIGNMOB(2531, magic_user); ASSIGNMOB(2532, magic_user); ASSIGNMOB(2533, magic_user); ASSIGNMOB(2534, magic_user); ASSIGNMOB(2536, magic_user); ASSIGNMOB(2537, magic_user); ASSIGNMOB(2538, magic_user); ASSIGNMOB(2540, magic_user); ASSIGNMOB(2541, magic_user); ASSIGNMOB(2548, magic_user); ASSIGNMOB(2549, magic_user); ASSIGNMOB(2552, magic_user); ASSIGNMOB(2553, magic_user); ASSIGNMOB(2554, magic_user); ASSIGNMOB(2556, magic_user); ASSIGNMOB(2557, magic_user); ASSIGNMOB(2559, magic_user); ASSIGNMOB(2560, magic_user); ASSIGNMOB(2562, magic_user); ASSIGNMOB(2564, magic_user); SEWERS ASSIGNMOB(7006, snake); ASSIGNMOB(7009, magic_user); ASSIGNMOB(7200, magic_user); ASSIGNMOB(7201, magic_user); ASSIGNMOB(7202, magic_user); */ /* FOREST ASSIGNMOB(6112, magic_user); ASSIGNMOB(6113, snake); ASSIGNMOB(6114, magic_user); ASSIGNMOB(6115, magic_user); ASSIGNMOB(6116, magic_user); ASSIGNMOB(6117, magic_user); ARACHNOS ASSIGNMOB(6302, magic_user); ASSIGNMOB(6309, magic_user); ASSIGNMOB(6312, magic_user); ASSIGNMOB(6314, magic_user); ASSIGNMOB(6315, magic_user); Desert ASSIGNMOB(5004, magic_user); ASSIGNMOB(5005, guild_guard); ASSIGNMOB(5010, magic_user); ASSIGNMOB(5014, magic_user); */ /* Drow City ASSIGNMOB(5103, magic_user); ASSIGNMOB(5104, magic_user); ASSIGNMOB(5107, magic_user); ASSIGNMOB(5108, magic_user); */ /* Old Thalos ASSIGNMOB(5200, magic_user); ASSIGNMOB(5201, magic_user); ASSIGNMOB(5209, magic_user); */ /* New Thalos ASSIGNMOB(5404, receptionist); ASSIGNMOB(5421, magic_user); ASSIGNMOB(5422, magic_user); ASSIGNMOB(5423, magic_user); ASSIGNMOB(5424, magic_user); ASSIGNMOB(5425, magic_user); ASSIGNMOB(5426, magic_user); ASSIGNMOB(5427, magic_user); ASSIGNMOB(5428, magic_user); ASSIGNMOB(5434, cityguard); ASSIGNMOB(5440, magic_user); ASSIGNMOB(5455, magic_user); ASSIGNMOB(5461, cityguard); ASSIGNMOB(5462, cityguard); ASSIGNMOB(5463, cityguard); ASSIGNMOB(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(12009, magic_user); ASSIGNMOB(12018, cityguard); ASSIGNMOB(12020, magic_user); ASSIGNMOB(12021, cityguard); ASSIGNMOB(12025, magic_user); ASSIGNMOB(12030, magic_user); ASSIGNMOB(12031, magic_user); ASSIGNMOB(12032, magic_user); */ /* King Welmar's Castle (not covered in castle.c) ASSIGNMOB(15015, thief); ASSIGNMOB(15032, magic_user); */ /* DWARVEN KINGDOM ASSIGNMOB(6500, cityguard); ASSIGNMOB(6502, magic_user); ASSIGNMOB(6509, magic_user); ASSIGNMOB(6516, magic_user); */ } /* assign special procedures to objects */ void assign_objects(void) { SPECIAL(bank); SPECIAL(gen_board); ASSIGNOBJ(4000, gen_board); /* elf's board */ ASSIGNOBJ(4001, gen_board); /* dwarf's board */ ASSIGNOBJ(4002, gen_board); /* gnome's board */ ASSIGNOBJ(4003, gen_board); /* halfling's board */ ASSIGNOBJ(4004, gen_board); /* figher's board */ ASSIGNOBJ(4005, gen_board); /* cleric's board */ ASSIGNOBJ(4006, gen_board); /* mage's board */ ASSIGNOBJ(4007, gen_board); /* thief's board */ ASSIGNOBJ(4008, gen_board); /* immort */ ASSIGNOBJ(4009, gen_board); /* morts */ ASSIGNOBJ(4010, gen_board); /* freeze */ ASSIGNOBJ(4011, gen_board); /* social (adventurers' guild)*/ ASSIGNOBJ(4012, bank); } /* assign special procedures to rooms */ void assign_rooms(void) { extern int dts_are_dumps; int i; SPECIAL(dump); SPECIAL(pet_shops); SPECIAL(pray_for_items); SPECIAL(war_reg); SPECIAL(bounty_reg); SPECIAL(assass_reg); SPECIAL(engraver); ASSIGNROOM(4088, war_reg); ASSIGNROOM(4228, pet_shops); ASSIGNROOM(4194, engraver); ASSIGNROOM(4202, bounty_reg); ASSIGNROOM(4118, assass_reg); ASSIGNROOM(4106, dump); if (dts_are_dumps) for (i = 0; i < top_of_world; i++) if (IS_SET(ROOM_FLAGS(i), ROOM_DEATH)) world[i].func = dump; }