/* ************************************************************************ * 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; */ }