/* ************************************************************************ * 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 "structs.h" #include "db.h" #include "config.h" extern struct room_data *world; extern struct index_data *mob_index; extern struct index_data *obj_index; extern int top_of_world; extern struct obj_data *object_list; void boot_the_shops(); void assign_the_shopkeepers(); /* ******************************************************************** * Assignments * ******************************************************************** */ /* assign special procedures to mobiles */ void assign_mobiles(void) { int cityguard(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int receptionist(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int guild(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int guild_guard(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int puff(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int devour(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int janitor(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int mayor(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int poison(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int thief(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int magic_user(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int offensive(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int brass_dragon(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int sales_spec(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int jester(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int snowbeast(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int snowvulture(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int spiny(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int phalanx(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int skeleton(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int spore_ball(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int clyde(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int waiter(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int cookie(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int mage_anapest(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int guru_anapest(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int farmer(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int taxman(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int albert(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int neophyte(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int bridge_troll(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int citizenship(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int apprehender(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int jailkeeper(struct char_data *ch,struct char_data *pl,int cmd,char *arg); int witness(struct char_data *ch,struct char_data *pl,int cmd,char *arg); mob_index[real_mobile(1)].func = puff; mob_index[real_mobile(4)].func = citizenship; mob_index[real_mobile(1205)].func = sales_spec; mob_index[real_mobile(5005)].func = brass_dragon; mob_index[real_mobile(4061)].func = cityguard; mob_index[real_mobile(3059)].func = cityguard; mob_index[real_mobile(3060)].func = cityguard; mob_index[real_mobile(3061)].func = janitor; #if CONFIG_JAIL mob_index[real_mobile(3065)].func = witness; #endif mob_index[real_mobile(3067)].func = cityguard; mob_index[real_mobile(3062)].func = devour; mob_index[real_mobile(3066)].func = devour; mob_index[real_mobile(3068)].func = janitor; mob_index[real_mobile(3069)].func = jester; mob_index[real_mobile(3070)].func = offensive; #if CONFIG_JAIL mob_index[real_mobile(3072)].func = witness; mob_index[real_mobile(3080)].func = jailkeeper; mob_index[real_mobile(3081)].func = apprehender; mob_index[real_mobile(3082)].func = apprehender; #endif mob_index[real_mobile(3005)].func = receptionist; 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; /* Tombs and Catacombs */ mob_index[real_mobile(3410)].func = devour; mob_index[real_mobile(3411)].func = devour; mob_index[real_mobile(3415)].func = cityguard; mob_index[real_mobile(3404)].func = poison; /* MORIA */ mob_index[real_mobile(4000)].func = poison; mob_index[real_mobile(4001)].func = poison; mob_index[real_mobile(4053)].func = poison; mob_index[real_mobile(4103)].func = thief; mob_index[real_mobile(4100)].func = magic_user; mob_index[real_mobile(4102)].func = poison; /* SEWERS */ mob_index[real_mobile(7006)].func = poison; /* FOREST */ mob_index[real_mobile(6113)].func = poison; mob_index[real_mobile(6114)].func = poison; mob_index[real_mobile(6910)].func = magic_user; /* DIROLFILA */ mob_index[real_mobile(12000)].func = snowbeast; mob_index[real_mobile(12001)].func = snowvulture; mob_index[real_mobile(12002)].func = spiny; mob_index[real_mobile(12003)].func = spiny; mob_index[real_mobile(12005)].func = phalanx; mob_index[real_mobile(12006)].func = skeleton; mob_index[real_mobile(12022)].func = spore_ball; mob_index[real_mobile(12023)].func = spore_ball; mob_index[real_mobile(12024)].func = skeleton; /* ANAPEST */ mob_index[real_mobile(12503)].func = clyde; mob_index[real_mobile(12504)].func = guild; mob_index[real_mobile(12505)].func = guild; mob_index[real_mobile(12506)].func = guru_anapest; mob_index[real_mobile(12507)].func = mage_anapest; mob_index[real_mobile(12509)].func = receptionist; mob_index[real_mobile(12515)].func = cookie; mob_index[real_mobile(12519)].func = farmer; mob_index[real_mobile(12520)].func = farmer; mob_index[real_mobile(12521)].func = taxman; mob_index[real_mobile(12522)].func = albert; mob_index[real_mobile(12523)].func = neophyte; mob_index[real_mobile(12525)].func = receptionist; mob_index[real_mobile(12526)].func = cityguard; mob_index[real_mobile(12527)].func = cityguard; mob_index[real_mobile(12528)].func = cityguard; mob_index[real_mobile(12529)].func = cityguard; mob_index[real_mobile(12530)].func = cityguard; #if CONFIG_JAIL mob_index[real_mobile(12580)].func = jailkeeper; mob_index[real_mobile(12581)].func = apprehender; mob_index[real_mobile(12582)].func = apprehender; #endif mob_index[real_mobile(14202)].func = bridge_troll; boot_the_shops(); assign_the_shopkeepers(); /* After shop assign so that "extra" stuff will work */ mob_index[real_mobile(12502)].func = waiter; } /* assign special procedures to objects */ void assign_objects(void) { int board(struct obj_data *obj,struct char_data *ch, int cmd, char *arg); int crystal_spike(struct obj_data *obj,struct char_data *ch, int cmd, char *arg); int jailtally(struct obj_data *obj,struct char_data *ch, int cmd, char *arg); obj_index[real_object(12005)].func = board; obj_index[real_object(12000)].func = crystal_spike; obj_index[real_object(3099)].func = board; obj_index[real_object(3098)].func = board; obj_index[real_object(66)].func = board; obj_index[real_object(59)].func = board; obj_index[real_object(77)].func = board; obj_index[real_object(55)].func = board; obj_index[real_object(9)].func = board; #if CONFIG_JAIL obj_index[real_object(3068)].func = jailtally; obj_index[real_object(12586)].func = jailtally; #endif } /* assign special procedures to rooms */ void assign_rooms(void) { int dump(int room, struct char_data *ch, int cmd, char *arg); int chalice(int room, struct char_data *ch, int cmd, char *arg); int kings_hall(int room, struct char_data *ch, int cmd, char *arg); int pet_shops(int room, struct char_data *ch, int cmd, char *arg); int pray_for_items(int room, struct char_data *ch, int cmd, char *arg); int arena_shop(int room, struct char_data *ch, int cmd, char *arg); int arena_guard(int room, struct char_data *ch, int cmd, char *arg); int remove_team(int room, struct char_data *ch, int cmd, char *arg); int do_multiclass(int room, struct char_data *ch, int cmd, char *arg); int feed_lock(int room, struct char_data *ch, int cmd, char *arg); world[real_room(1212)].funct = feed_lock; world[real_room(3751)].funct = remove_team; world[real_room(3702)].funct = arena_guard; world[real_room(3703)].funct = arena_guard; world[real_room(3755)].funct = do_multiclass; world[real_room(3030)].funct = dump; world[real_room(3054)].funct = pray_for_items; /* world[real_room(704)].funct = chalice; world[real_room(2518)].funct = kings_hall; */ world[real_room(1203)].funct = kings_hall; world[real_room(3031)].funct = pet_shops; world[real_room(3701)].funct = arena_shop; world[real_room(12608)].funct = dump; world[real_room(12610)].funct = pet_shops; } /* ******************************************************************** * Handling funcs * ******************************************************************** */ void room_procs() { int i; for(i=0;i<top_of_world;i++) if(world[i].funct) (*world[i].funct)(i,NULL,0,NULL); } void item_procs() { struct obj_data *i; for(i=object_list;i;i=i->next) if(obj_index[i->item_number].func) (*obj_index[i->item_number].func)(i,NULL,0,NULL); }