/************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefiting. We hope that you share your changes too. What goes * * around, comes around. * *************************************************************************** * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * *************************************************************************** * 1stMud ROM Derivative (c) 2001-2004 by Markanth * * http://www.firstmud.com/ <markanth@firstmud.com> * * By using this code you have agreed to follow the term of * * the 1stMud license in ../doc/1stMud/LICENSE * ***************************************************************************/ #include "merc.h" #include "tables.h" #include "olc.h" #include "interp.h" FlagTable * flag_lookup (const char *name, FlagTable * f) { if (NullStr (name)) return NULL; while (f->name != NULL) { if (!str_prefix (name, f->name)) return f; f++; } return NULL; } ClanData * clan_lookup (const char *name) { ClanData *clan; for (clan = clan_first; clan; clan = clan->next) { if (tolower (name[0]) == tolower (clan->name[0]) && !str_prefix (name, clan->name)) return clan; } return NULL; } RaceData * race_lookup (const char *name) { RaceData *race; for (race = race_first; race != NULL; race = race->next) { if (tolower (name[0]) == tolower (race->name[0]) && !str_prefix (name, race->name)) return race; } return NULL; } Lookup_Fun (liq_lookup) { int liq; for (liq = 0; liq_table[liq].liq_name != NULL; liq++) { if (tolower (name[0]) == tolower (liq_table[liq].liq_name[0]) && !str_prefix (name, liq_table[liq].liq_name)) return liq; } return -1; } Lookup_Fun (stance_lookup) { int st; for (st = 0; st < MAX_STANCE; st++) { if (!str_prefix (name, stance_table[st].name)) return st; } return -1; } HelpData * help_lookup (const char *keyword) { HelpData *pHelp; char temp[MIL], argall[MIL]; argall[0] = '\0'; while (!NullStr (keyword)) { keyword = one_argument (keyword, temp); if (!NullStr (argall)) strcat (argall, " "); strcat (argall, temp); } for (pHelp = help_first; pHelp != NULL; pHelp = pHelp->next) if (is_name (argall, pHelp->keyword)) return pHelp; return NULL; } CmdData * cmd_lookup (const char *name) { int hash; CmdData *pCmd; if (NullStr (name)) return NULL; hash = tolower (name[0]) % MAX_CMD_HASH; for (pCmd = command_hash[hash]; pCmd; pCmd = pCmd->next_hash) if (!str_prefix (name, pCmd->name)) return pCmd; return NULL; } DeityData * deity_lookup (const char *arg) { DeityData *i; for (i = deity_first; i; i = i->next) if (!str_prefix (arg, i->name)) return i; return NULL; } Lookup_Fun (tzone_lookup) { int i; for (i = 0; i < MAX_TZONE; i++) { if (!str_cmp (name, tzone_table[i].name)) return i; } for (i = 0; i < MAX_TZONE; i++) { if (is_name (name, tzone_table[i].zone)) return i; } for (i = 0; i < MAX_TZONE; i++) { if (atoi (name) - 1 == i) return i; } return -1; } AreaData * area_lookup (const char *arg) { AreaData *pArea; for (pArea = area_first; pArea; pArea = pArea->next) { if (is_number (arg) && atoi (arg) == pArea->vnum) return pArea; else if (tolower (arg[0]) == tolower (pArea->name[0]) && !str_prefix (arg, pArea->name)) return pArea; else if (tolower (arg[0]) == tolower (pArea->file_name[0]) && !str_prefix (arg, pArea->file_name)) return pArea; } return NULL; } RoomIndex * area_begin (AreaData * pArea) { RoomIndex *pRoom; vnum_t vnum; for (vnum = pArea->min_vnum; vnum <= pArea->max_vnum; vnum++) if (vnum > 0 && (pRoom = get_room_index (vnum)) != NULL) return pRoom; return NULL; } Lookup_Fun (channel_lookup) { int i; for (i = 0; i < top_channel; i++) { if (!str_prefix (name, channel_table[i].name)) return i; } return -1; } SocialData * social_lookup (const char *name) { SocialData *i; for (i = social_first; i; i = i->next) if (!str_cmp (name, i->name)) return i; return NULL; } Lookup_Fun (get_direction) { if (!str_cmp (name, "n") || !str_cmp (name, "north")) return DIR_NORTH; if (!str_cmp (name, "e") || !str_cmp (name, "east")) return DIR_EAST; if (!str_cmp (name, "s") || !str_cmp (name, "south")) return DIR_SOUTH; if (!str_cmp (name, "w") || !str_cmp (name, "west")) return DIR_WEST; if (!str_cmp (name, "u") || !str_cmp (name, "up")) return DIR_UP; if (!str_cmp (name, "d") || !str_cmp (name, "down")) return DIR_DOWN; return -1; }