/* ************************************************************************ * file: spec_assign.c , Special module. Part of DIKUMUD * * Usage: Procedures assigning function pointers. * * Copyright (C) 1990, 1991 - see 'license.doc' for complete information. * ************************************************************************* */ #include <stdio.h> #include <string.h> #include "structs.h" #include "db.h" 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 * ******************************************************************** */ int levelguard(struct char_data *ch, int cmd, char *arg); int guild(struct char_data *ch, int cmd, char *arg); int fitness(struct char_data *ch, int cmd, char *arg); int xpstore(struct char_data *ch, int cmd, char *arg); int rooster(struct char_data *ch, int cmd, char *arg); int fido(struct char_data *ch, int cmd, char *arg); int janitor(struct char_data *ch, int cmd, char *arg); int mayor(struct char_data *ch, int cmd, char *arg); int loader(struct char_data *ch, int cmd, char *arg); int dad(struct char_data *ch, int cmd, char *arg); int bot(struct char_data *ch, int cmd, char *arg); int mom(struct char_data *ch, int cmd, char *arg); int grandpa(struct char_data *ch, int cmd, char *arg); int unclefred(struct char_data *ch, int cmd, char *arg); int adaptor(struct char_data *ch, int cmd, char *arg); int defuser(struct char_data *ch, int cmd, char *arg); int builder(struct char_data *ch, int cmd, char *arg); int mudhead(struct char_data *ch, int cmd, char *arg); int metaphysician(struct char_data *ch, int cmd, char *arg); int snake(struct char_data *ch, int cmd, char *arg); int thief(struct char_data *ch, int cmd, char *arg); int magic_user(struct char_data *ch, int cmd, char *arg); int hunter(struct char_data *ch, int cmd, char *arg); int wilbur(struct char_data *ch, int cmd, char *arg); int sneaker(struct char_data *ch, int cmd, char *arg); int rusher(struct char_data *ch, int cmd, char *arg); int lolth(struct char_data *ch, int cmd, char *arg); int tree_gate(struct char_data *ch, int cmd, char *arg); int little_dragon(struct char_data *ch, int cmd, char *arg); int big_dragon(struct char_data *ch, int cmd, char *arg); int kickbasher(struct char_data *ch, int cmd, char *arg); int cloner(struct char_data *ch, int cmd, char *arg); int highwayman(struct char_data *ch, int cmd, char *arg); int shooter(struct char_data *ch, int cmd, char *arg); int sleeper(struct char_data *ch, int cmd, char *arg); int charmer(struct char_data *ch, int cmd, char *arg); int plasterman(struct char_data *ch, int cmd, char *arg); int teleporter(struct char_data *ch, int cmd, char *arg); int druid(struct char_data *ch, int cmd, char *arg); int buddy(struct char_data *ch, int cmd, char *arg); int vampire(struct char_data *ch, int cmd, char *arg); int barker(struct char_data *ch, int cmd, char *arg); int dealer(struct char_data *ch, int cmd, char *arg); int poker(struct char_data *ch, int cmd, char *arg); int viper(struct char_data *ch, int cmd, char *arg); int samhill(struct char_data *ch, int cmd, char *arg); /* assign special procedures to mobiles */ void assign_mobiles(void) { int i; mob_index[real_mobile(8500)].func = defuser; mob_index[real_mobile(8600)].func = levelguard; mob_index[real_mobile(8601)].func = levelguard; mob_index[real_mobile(10010)].func = adaptor; mob_index[real_mobile(10011)].func = adaptor; mob_index[real_mobile(10015)].func = adaptor; mob_index[real_mobile(10016)].func = adaptor; mob_index[real_mobile(10020)].func = builder; mob_index[real_mobile(1313)].func = samhill; mob_index[real_mobile(1302)].func = rooster; mob_index[real_mobile(1471)].func = barker; mob_index[real_mobile(1472)].func = dealer; mob_index[real_mobile(1473)].func = poker; mob_index[real_mobile(1312)].func = janitor; 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(8006)].func = fido; /* Suburbs */ mob_index[real_mobile(12011)].func = shooter; mob_index[real_mobile(12020)].func = loader; mob_index[real_mobile(12039)].func = hunter; /* Island */ mob_index[real_mobile(2800)].func = shooter; mob_index[real_mobile(2801)].func = shooter; mob_index[real_mobile(2809)].func = shooter; mob_index[real_mobile(2816)].func = snake; mob_index[real_mobile(2818)].func = snake; /* Drow */ mob_index[real_mobile(5110)].func = lolth; /* Campus */ mob_index[real_mobile(2415)].func = thief; mob_index[real_mobile(2428)].func = thief; mob_index[real_mobile(2450)].func = charmer; mob_index[real_mobile(2460)].func = cloner; mob_index[real_mobile(2101)].func = hunter; mob_index[real_mobile(2102)].func = hunter; /* Hecate, Proserpina and Hypnos */ mob_index[real_mobile(2105)].func = kickbasher; mob_index[real_mobile(2113)].func = kickbasher; mob_index[real_mobile(2116)].func = kickbasher; mob_index[real_mobile(2120)].func = loader; mob_index[real_mobile(2122)].func = sleeper; mob_index[real_mobile(2124)].func = big_dragon; /* Scott's */ mob_index[real_mobile(1401)].func = buddy; /* Midgaard */ mob_index[real_mobile(3200)].func = mudhead; mob_index[real_mobile(1513)].func = plasterman; mob_index[real_mobile(1575)].func = teleporter; mob_index[real_mobile(1530)].func = xpstore; mob_index[real_mobile(1536)].func = loader; mob_index[real_mobile(1544)].func = thief; mob_index[real_mobile(3020)].func = guild; mob_index[real_mobile(3021)].func = fitness; mob_index[real_mobile(3143)].func = mayor; mob_index[real_mobile(3150)].func = mom; mob_index[real_mobile(3160)].func = dad; mob_index[real_mobile(1304)].func = bot; mob_index[real_mobile(1308)].func = unclefred; mob_index[real_mobile(1309)].func = shooter; mob_index[real_mobile(1314)].func = wilbur; mob_index[real_mobile(1315)].func = kickbasher; mob_index[real_mobile(1316)].func = kickbasher; mob_index[real_mobile(3151)].func = grandpa; mob_index[real_mobile(1310)].func = rusher; mob_index[real_mobile(3147)].func = thief; mob_index[real_mobile(1320)].func = hunter; mob_index[real_mobile(1564)].func = sneaker; /* Dragons */ mob_index[real_mobile(1305)].func = big_dragon; mob_index[real_mobile(6112)].func = little_dragon; mob_index[real_mobile(7040)].func = little_dragon; mob_index[real_mobile(15000)].func = little_dragon; mob_index[real_mobile(15017)].func = little_dragon; mob_index[real_mobile(18610)].func = little_dragon; /* Trees */ mob_index[real_mobile(15101)].func = tree_gate; mob_index[real_mobile(15102)].func = tree_gate; mob_index[real_mobile(15103)].func = tree_gate; mob_index[real_mobile(15104)].func = tree_gate; mob_index[real_mobile(15105)].func = tree_gate; mob_index[real_mobile(15106)].func = tree_gate; /* Abyss */ mob_index[real_mobile(15615)].func = charmer; /* Heal's */ mob_index[real_mobile(8118)].func = kickbasher; mob_index[real_mobile(8216)].func = kickbasher; /* Arachnos */ /* Tomb */ /* 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(4055)].func = rusher; mob_index[real_mobile(4103)].func = thief; mob_index[real_mobile(4102)].func = snake; /* SEWERS */ mob_index[real_mobile(7006)].func = snake; /* FOREST */ mob_index[real_mobile(6113)].func = snake; mob_index[real_mobile(6114)].func = snake; /* Queen spider */ mob_index[real_mobile(6114)].func = snake; /* Cube */ /* Trail */ mob_index[real_mobile(16500)].func = highwayman; mob_index[real_mobile(16520)].func = highwayman; mob_index[real_mobile(16504)].func = loader; mob_index[real_mobile(16507)].func = loader; mob_index[real_mobile(16510)].func = loader; mob_index[real_mobile(16601)].func = snake; mob_index[real_mobile(16605)].func = druid; mob_index[real_mobile(16606)].func = druid; mob_index[real_mobile(16608)].func = druid; mob_index[real_mobile(16610)].func = teleporter; mob_index[real_mobile(16612)].func = snake; mob_index[real_mobile(16613)].func = sleeper; mob_index[real_mobile(16621)].func = viper; mob_index[real_mobile(17104)].func = snake; mob_index[real_mobile(17210)].func = vampire; mob_index[real_mobile(17211)].func = vampire; mob_index[real_mobile(17409)].func = thief; mob_index[real_mobile(1311)].func = metaphysician; boot_the_shops(); assign_the_shopkeepers(); } /* assign special procedures to objects */ void assign_objects(void) { int drinkmachine(struct char_data *ch, int cmd, char *arg); obj_index[real_object(1000)].func = drinkmachine; obj_index[real_object(1001)].func = drinkmachine; } /* assign special procedures to rooms */ void assign_rooms(void) { int dump(struct char_data *ch, int cmd, char *arg); int pet_shops(struct char_data *ch, int cmd, char *arg); int hospital(struct char_data *ch, int cmd, char *arg); int level_gate(struct char_data *ch, int cmd, char *arg); int size_gate(struct char_data *ch, int cmd, char *arg); int portal(struct char_data *ch, int cmd, char *arg); int bank(struct char_data *ch, int cmd, char *arg); world[real_room(3002)].funct = bank; world[real_room(1453)].funct = level_gate; world[real_room(17200)].funct = level_gate; world[real_room(2346)].funct = level_gate; world[real_room(3300)].funct = level_gate; world[real_room(5298)].funct = level_gate; world[real_room(6001)].funct = level_gate; world[real_room(2431)].funct = size_gate; world[real_room(3031)].funct = pet_shops; world[real_room(3060)].funct = hospital; world[real_room(2158)].funct = portal; world[real_room(3030)].funct = dump; world[real_room(1514)].funct = dump; } static char *specs[]={ "NONE", "thief", "kickbasher", "hunter", "shooter", "sleeper", "charmer", "bot", "magic user", "plasterman", "little dragon", "big dragon", "buddy", "snake", "loader", "druid", "clone", "vampire", "rooster", "sneaker", "sam hill", "levelguard", "wilbur", 0 }; void do_reassign(struct char_data *ch, char *argument, int cmd) { int num,key; char buf1[512],buf2[64],buf3[64]; half_chop(argument,buf1,buf2); if(!*buf1){ for(num=0;specs[num];num++){ sprintf(buf2,"%2d: %s\n\r",num,specs[num]); strcat(buf1,buf2); } send_to_char(buf1,ch); return; } one_argument(buf2,buf3); if(!*buf3) return; num=atoi(buf1); if(num <= 0) return; key=atoi(buf3); if((key < 0) || (key > 23)) return; switch(key){ case 0: mob_index[real_mobile(num)].func = 0; break; case 1: mob_index[real_mobile(num)].func = thief; break; case 2: mob_index[real_mobile(num)].func = kickbasher; break; case 3: mob_index[real_mobile(num)].func = hunter; break; case 4: mob_index[real_mobile(num)].func = shooter; break; case 5: mob_index[real_mobile(num)].func = sleeper; break; case 6: mob_index[real_mobile(num)].func = charmer; break; case 7: mob_index[real_mobile(num)].func = bot; break; case 8: mob_index[real_mobile(num)].func = magic_user; break; case 9: mob_index[real_mobile(num)].func = plasterman; break; case 10: mob_index[real_mobile(num)].func = little_dragon; break; case 11: mob_index[real_mobile(num)].func = big_dragon; break; case 12: mob_index[real_mobile(num)].func = buddy; break; case 13: mob_index[real_mobile(num)].func = snake; break; case 14: mob_index[real_mobile(num)].func = loader; break; case 15: mob_index[real_mobile(num)].func = druid; break; case 16: mob_index[real_mobile(num)].func = cloner; break; case 17: mob_index[real_mobile(num)].func = vampire; break; case 18: mob_index[real_mobile(num)].func = rooster; break; case 19: mob_index[real_mobile(num)].func = sneaker; break; case 20: mob_index[real_mobile(num)].func = samhill; break; case 21: mob_index[real_mobile(num)].func = levelguard; break; case 22: mob_index[real_mobile(num)].func = wilbur; break; } sprintf(buf1,"Set %d to %s.\n\r",num,specs[key]); send_to_char(buf1,ch); }