/* ************************************************************************ * File: races.c Extension of CircleMUD * * Usage: Source file for race-specific code * * Author: Brian Williams <bmw@efn.org> * * * * 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 "utils.h" #include "spells.h" #include "interpreter.h" /* Local functions */ const char *race_abbrevs[]; const char *pc_race_types[]; const char *race_menu; int parse_race(char arg); bitvector_t find_race_bitvector(const char *arg); int invalid_race(struct char_data *ch, struct obj_data *obj); const char *race_abbrevs[] = { "Hum", "Elf", "Gno", "Dwa", "Hob", "\n" }; const char *pc_race_types[] = { "Human", "Elf", "Gnome", "Dwarf", "Hobbit", "\n" }; const char *race_menu = "\r\n" "Select a race:\r\n" " 1) Human\r\n" " 2) Elf\r\n" " 3) Gnome\r\n" " 4) Dwarf\r\n" " 5) Hobbit\r\n"; int parse_race(char arg) { switch (arg) { case '1': return RACE_HUMAN; case '2': return RACE_ELF; case '3': return RACE_GNOME; case '4': return RACE_DWARF; case '5': return RACE_HOBBIT; default : return RACE_UNDEFINED; } } bitvector_t find_race_bitvector(const char *arg) { size_t rpos, ret = 0; for (rpos = 0; rpos < strlen(arg); rpos++) ret |= (1 << parse_race(arg[rpos])); return (ret); } int invalid_race(struct char_data *ch, struct obj_data *obj) { if ((OBJ_FLAGGED(obj, ITEM_ANTI_HUMAN) && IS_HUMAN(ch)) || (OBJ_FLAGGED(obj, ITEM_ANTI_ELF) && IS_ELF(ch)) || (OBJ_FLAGGED(obj, ITEM_ANTI_GNOME) && IS_GNOME(ch)) || (OBJ_FLAGGED(obj, ITEM_ANTI_DWARF) && IS_DWARF(ch)) || (OBJ_FLAGGED(obj, ITEM_ANTI_HOBBIT) && IS_HOBBIT(ch))) return (1); else return (0); }