/*************************************************************************** * God Wars Mud originally written by KaVir aka Richard Woolcock. * * Changes done to the code done by Sage aka Walter Howard, this mud is * * for the public, however if you run this code it means you agree * * to the license.low, license.gw, and license.merc have fun. :) * ***************************************************************************/ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" struct flag_stat_type { const struct flag_type *structure; bool stat; }; /***************************************************************************** Name: flag_stat_table Purpose: This table catagorizes the tables following the lookup functions below into stats and flags. Flags can be toggled but stats can only be assigned. Update this table when a new set of flags is installed. ****************************************************************************/ const struct flag_stat_type flag_stat_table[] = { /* { structure stat }, */ { area_flags, FALSE }, { sex_flags, TRUE }, { exit_flags, FALSE }, { door_resets, TRUE }, { room_flags, FALSE }, { sector_flags, TRUE }, { type_flags, TRUE }, { extra_flags, FALSE }, { wear_flags, FALSE }, { act_flags, FALSE }, { affect_flags, FALSE }, { apply_flags, TRUE }, { wear_loc_flags, TRUE }, { wear_loc_strings, TRUE }, { weapon_flags, TRUE }, { container_flags, FALSE }, { liquid_flags, TRUE }, { 0, 0 } }; /***************************************************************************** Name: is_stat( table ) Purpose: Returns TRUE if the table is a stat table and FALSE if flag. Called by: flag_value and flag_string. Note: This function is local and used only in bit.c. ****************************************************************************/ bool is_stat( const struct flag_type *flag_table ) { int flag; for (flag = 0; flag_stat_table[flag].structure; flag++) { if ( flag_stat_table[flag].structure == flag_table && flag_stat_table[flag].stat ) return TRUE; } return FALSE; } /* * This function is Russ Taylor's creation. Thanks Russ! * All code copyright (C) Russ Taylor, permission to use and/or distribute * has NOT been granted. Use only in this OLC package has been granted. */ /***************************************************************************** Name: flag_lookup( flag, table ) Purpose: Returns the value of a single, settable flag from the table. Called by: flag_value and flag_string. Note: This function is local and used only in bit.c. ****************************************************************************/ int flag_lookup(const char *name, const struct flag_type *flag_table) { int flag; for (flag = 0; *flag_table[flag].name; flag++) /* OLC 1.1b */ { if ( !str_cmp( name, flag_table[flag].name ) && flag_table[flag].settable ) return flag_table[flag].bit; } return NO_FLAG; } /***************************************************************************** Name: flag_value( table, flag ) Purpose: Returns the value of the flags entered. Multi-flags accepted. Called by: olc.c and olc_act.c. ****************************************************************************/ int flag_value( const struct flag_type *flag_table, char *argument) { char word[MAX_INPUT_LENGTH]; int bit; int marked = 0; bool found = FALSE; if ( is_stat( flag_table ) ) { one_argument( argument, word ); if ( ( bit = flag_lookup( word, flag_table ) ) != NO_FLAG ) return bit; else return NO_FLAG; } /* * Accept multiple flags. */ for (; ;) { argument = one_argument( argument, word ); if ( word[0] == '\0' ) break; if ( ( bit = flag_lookup( word, flag_table ) ) != NO_FLAG ) { SET_BIT( marked, bit ); found = TRUE; } } if ( found ) return marked; else return NO_FLAG; } /***************************************************************************** Name: flag_string( table, flags/stat ) Purpose: Returns string with name(s) of the flags or stat entered. Called by: act_olc.c, olc.c, and olc_save.c. ****************************************************************************/ char *flag_string( const struct flag_type *flag_table, int bits ) { static char buf[512]; int flag; buf[0] = '\0'; for (flag = 0; *flag_table[flag].name; flag++) /* OLC 1.1b */ { if ( !is_stat( flag_table ) && IS_SET(bits, flag_table[flag].bit) ) { strcat( buf, " " ); strcat( buf, flag_table[flag].name ); } else if ( flag_table[flag].bit == bits ) { strcat( buf, " " ); strcat( buf, flag_table[flag].name ); break; } } return (buf[0] != '\0') ? buf+1 : "none"; } char *act_xbv( const struct flag_type *table, const XBV vector ) { static char buf [ MAX_STRING_LENGTH ]; int pos; buf[0] = '\0'; for ( pos = 0; *table[pos].name; pos++ ) { if ( xIS_SET( vector, table[pos].bit ) ) { strcat( buf, " " ); strcat( buf, table[pos].name ); } } return ( buf[0] != '\0' ) ? buf+1 : "none"; } const struct flag_type area_flags[] = { { "none", AREA_NONE, FALSE }, { "changed", AREA_CHANGED, FALSE }, { "added", AREA_ADDED, FALSE }, { "loading", AREA_LOADING, FALSE }, { "unlinked", AREA_UNLINKED, TRUE }, { "sanctuary", AREA_SANCTUARY, TRUE }, { "quest", AREA_QUEST, TRUE }, { "", 0, 0 } }; const struct flag_type sex_flags[] = { { "male", SEX_MALE, TRUE }, { "female", SEX_FEMALE, TRUE }, { "neutral", SEX_NEUTRAL, TRUE }, { "", 0, 0 } }; const struct flag_type exit_flags[] = { { "door", EX_ISDOOR, TRUE }, { "closed", EX_CLOSED, TRUE }, { "locked", EX_LOCKED, TRUE }, { "pickproof", EX_PICKPROOF, TRUE }, { "bashproof", EX_BASHPROOF, TRUE }, { "bashed", EX_BASHED, FALSE }, { "passproof", EX_PASSPROOF, TRUE }, { "", 0, 0 } }; const struct flag_type door_resets[] = { /* name BIT, settable? */ { "open and unlocked", 0, TRUE }, { "closed", 1, TRUE }, { "closed and locked", 2, TRUE }, { "open and secret", 3, TRUE }, { "closed, secret, and pickproof", 4, TRUE }, { "pickproof, nopass, and closed", 5, TRUE }, { "", 0, 0 } }; const struct flag_type room_flags[] = { { "dark", ROOM_DARK, TRUE }, { "no_mobs", ROOM_NO_MOB, TRUE }, { "indoors", ROOM_INDOORS, TRUE }, { "private", ROOM_PRIVATE, TRUE }, { "safe", ROOM_SAFE, TRUE }, { "solitary", ROOM_SOLITARY, TRUE }, { "pet_shop", ROOM_PET_SHOP, TRUE }, { "no_recall", ROOM_NO_RECALL, TRUE }, { "no_teleport", ROOM_NO_TELEPORT, TRUE }, { "total_darkness", ROOM_TOTAL_DARKNESS, TRUE }, { "blade_barrier", ROOM_BLADE_BARRIER, TRUE }, { "flaming", ROOM_FLAMING, TRUE }, { "silence", ROOM_SILENCE, TRUE }, { "castle_1", ROOM_CASTLE1, TRUE }, { "castle_2", ROOM_CASTLE2, TRUE }, { "castle_3", ROOM_CASTLE3, TRUE }, { "castle_4", ROOM_CASTLE4, TRUE }, { "castle_5", ROOM_CASTLE5, TRUE }, { "castle_6", ROOM_CASTLE6, TRUE }, { "castle_7", ROOM_CASTLE7, TRUE }, { "castle_8", ROOM_CASTLE8, TRUE }, { "castle_9", ROOM_CASTLE9, TRUE }, { "castle_10", ROOM_CASTLE10, TRUE }, { "", 0, 0 } }; const struct flag_type sector_flags[] = { { "inside", SECT_INSIDE, TRUE }, { "city", SECT_CITY, TRUE }, { "field", SECT_FIELD, TRUE }, { "forest", SECT_FOREST, TRUE }, { "hills", SECT_HILLS, TRUE }, { "mountain", SECT_MOUNTAIN, TRUE }, { "swim", SECT_WATER_SWIM, TRUE }, { "noswim", SECT_WATER_NOSWIM, TRUE }, { "air", SECT_AIR, TRUE }, { "desert", SECT_DESERT, TRUE }, { "", 0, 0 } }; const struct flag_type type_flags[] = { { "light", ITEM_LIGHT, TRUE }, { "scroll", ITEM_SCROLL, TRUE }, { "wand", ITEM_WAND, TRUE }, { "staff", ITEM_STAFF, TRUE }, { "weapon", ITEM_WEAPON, TRUE }, { "treasure", ITEM_TREASURE, TRUE }, { "armor", ITEM_ARMOR, TRUE }, { "potion", ITEM_POTION, TRUE }, { "furniture", ITEM_FURNITURE, TRUE }, { "trash", ITEM_TRASH, TRUE }, { "container", ITEM_CONTAINER, TRUE }, { "drink-container", ITEM_DRINK_CON, TRUE }, { "key", ITEM_KEY, TRUE }, { "food", ITEM_FOOD, TRUE }, { "money", ITEM_MONEY, TRUE }, { "boat", ITEM_BOAT, TRUE }, { "npc corpse", ITEM_CORPSE_NPC, TRUE }, { "pc corpse", ITEM_CORPSE_PC, FALSE }, { "fountain", ITEM_FOUNTAIN, TRUE }, { "pill", ITEM_PILL, TRUE }, { "portal", ITEM_PORTAL, TRUE }, { "egg", ITEM_EGG, TRUE }, { "voodoo", ITEM_VOODOO, TRUE }, { "stake", ITEM_STAKE, TRUE }, { "missile", ITEM_MISSILE, TRUE }, { "ammo", ITEM_AMMO, TRUE }, { "quest", ITEM_QUEST, TRUE }, { "questcard", ITEM_QUESTCARD, TRUE }, { "questmachine", ITEM_QUESTMACHINE, TRUE }, { "symbol", ITEM_SYMBOL, TRUE }, { "book", ITEM_BOOK, TRUE }, { "page", ITEM_PAGE, TRUE }, { "tool", ITEM_TOOL, TRUE }, { "wall", ITEM_WALL, TRUE }, { "ward", ITEM_WARD, TRUE }, { "waygate", ITEM_WGATE, TRUE }, { "", 0, 0 } }; const struct flag_type extra_flags[] = { { "glow", ITEM_GLOW, TRUE }, { "hum", ITEM_HUM, TRUE }, { "thrown", ITEM_THROWN, TRUE }, { "keep", ITEM_KEEP, TRUE }, { "vanish", ITEM_VANISH, TRUE }, { "invis", ITEM_INVIS, TRUE }, { "magic", ITEM_MAGIC, TRUE }, { "nodrop", ITEM_NODROP, TRUE }, { "bless", ITEM_BLESS, TRUE }, { "anti-good", ITEM_ANTI_GOOD, TRUE }, { "anti-evil", ITEM_ANTI_EVIL, TRUE }, { "anti-neutral", ITEM_ANTI_NEUTRAL, TRUE }, { "noremove", ITEM_NOREMOVE, TRUE }, { "inventory", ITEM_INVENTORY, TRUE }, { "shadowplane", ITEM_SHADOWPLANE, TRUE }, { "loyal", ITEM_LOYAL, TRUE }, { "illusion", ITEM_VANISH, TRUE }, { "dark", ITEM_DARK, TRUE }, { "mage_enchant", ITEM_MENCHANT, FALSE }, { "noclaim", ITEM_NOCLAIM, TRUE }, { "nocopy", ITEM_NOCOPY, TRUE }, { "satanic", ITEM_SATANIC, TRUE }, { "cloaked", ITEM_CLOAKED, FALSE }, { "", 0, 0 } }; const struct flag_type wear_flags[] = { { "take", ITEM_TAKE, TRUE }, { "finger", ITEM_WEAR_FINGER, TRUE }, { "neck", ITEM_WEAR_NECK, TRUE }, { "body", ITEM_WEAR_BODY, TRUE }, { "head", ITEM_WEAR_HEAD, TRUE }, { "legs", ITEM_WEAR_LEGS, TRUE }, { "feet", ITEM_WEAR_FEET, TRUE }, { "hands", ITEM_WEAR_HANDS, TRUE }, { "arms", ITEM_WEAR_ARMS, TRUE }, { "shield", ITEM_WEAR_SHIELD, TRUE }, { "about", ITEM_WEAR_ABOUT, TRUE }, { "waist", ITEM_WEAR_WAIST, TRUE }, { "wrist", ITEM_WEAR_WRIST, TRUE }, { "wield", ITEM_WIELD, TRUE }, { "hold", ITEM_HOLD, TRUE }, { "face", ITEM_WEAR_FACE, TRUE }, { "ear", ITEM_WEAR_EAR, TRUE }, { "ankle", ITEM_WEAR_ANKLE, TRUE }, { "nose", ITEM_WEAR_NOSE, TRUE }, { "mastery", ITEM_WEAR_MASTERY, TRUE }, { "", 0, 0 } }; const struct flag_type act_flags[] = { { "npc", ACT_IS_NPC, FALSE }, { "sentinel", ACT_SENTINEL, TRUE }, { "scavenger", ACT_SCAVENGER, TRUE }, { "aggressive", ACT_AGGRESSIVE, TRUE }, { "stay_area", ACT_STAY_AREA, TRUE }, { "wimpy", ACT_WIMPY, TRUE }, { "pet", ACT_PET, TRUE }, { "train", ACT_TRAIN, TRUE }, { "practice", ACT_PRACTICE, TRUE }, { "mount", ACT_MOUNT, TRUE }, { "no_parts", ACT_NOPARTS, TRUE }, { "no_exp", ACT_NOEXP, TRUE }, { "skilled", ACT_SKILLED, TRUE }, { "noastral", ACT_NOASTRAL, TRUE }, { "shopquest", ACT_SHOPQUEST, TRUE }, { "questmaster", ACT_QUESTMASTER, TRUE }, { "", 0, 0 } }; const struct flag_type affect_flags[] = { { "blind", AFF_BLIND, TRUE }, { "invisible", AFF_INVISIBLE, TRUE }, { "detect_evil", AFF_DETECT_EVIL, TRUE }, { "detect_invis", AFF_DETECT_INVIS, TRUE }, { "detect_magic", AFF_DETECT_MAGIC, TRUE }, { "detect_hidden", AFF_DETECT_HIDDEN, TRUE }, { "shadowplane", AFF_SHADOWPLANE, TRUE }, { "sanctuary", AFF_SANCTUARY, TRUE }, { "faerie_fire", AFF_FAERIE_FIRE, TRUE }, { "infrared", AFF_INFRARED, TRUE }, { "curse", AFF_CURSE, TRUE }, { "flaming", AFF_FLAMING, TRUE }, { "poison", AFF_POISON, TRUE }, { "protect", AFF_PROTECT, TRUE }, { "ethereal", AFF_ETHEREAL, TRUE }, { "sneak", AFF_SNEAK, TRUE }, { "hide", AFF_HIDE, TRUE }, { "sleep", AFF_SLEEP, TRUE }, { "charm", AFF_CHARM, TRUE }, { "flying", AFF_FLYING, TRUE }, { "pass_door", AFF_PASS_DOOR, TRUE }, { "polymorph", AFF_POLYMORPH, FALSE }, { "shadowsight", AFF_SHADOWSIGHT, TRUE }, { "", 0, 0 } }; /* * Used when adding an affect to tell where it goes. * See addaffect and delaffect in act_olc.c */ const struct flag_type apply_flags[] = { { "none", APPLY_NONE, TRUE }, { "str", APPLY_STR, TRUE }, { "dex", APPLY_DEX, TRUE }, { "int", APPLY_INT, TRUE }, { "wis", APPLY_WIS, TRUE }, { "con", APPLY_CON, TRUE }, { "sex", APPLY_SEX, TRUE }, { "class", APPLY_CLASS, TRUE }, { "level", APPLY_LEVEL, TRUE }, { "age", APPLY_AGE, TRUE }, { "height", APPLY_HEIGHT, TRUE }, { "weight", APPLY_WEIGHT, TRUE }, { "mana", APPLY_MANA, TRUE }, { "hp", APPLY_HIT, TRUE }, { "move", APPLY_MOVE, TRUE }, { "gold", APPLY_GOLD, TRUE }, { "experience", APPLY_EXP, TRUE }, { "ac", APPLY_AC, TRUE }, { "hitroll", APPLY_HITROLL, TRUE }, { "damroll", APPLY_DAMROLL, TRUE }, { "saving-para", APPLY_SAVING_PARA, TRUE }, { "saving-rod", APPLY_SAVING_ROD, TRUE }, { "saving-petri", APPLY_SAVING_PETRI, TRUE }, { "saving-breath", APPLY_SAVING_BREATH, TRUE }, { "saving-spell", APPLY_SAVING_SPELL, TRUE }, { "blood_pool", APPLY_BLOOD_MAX, TRUE }, { "blood_potency", APPLY_BLOOD_POT, TRUE }, { "", 0, 0 } }; /* * What is seen. */ const struct flag_type wear_loc_strings[] = { { "in the inventory", WEAR_NONE, TRUE }, { "as a light", WEAR_LIGHT, TRUE }, { "on the left finger", WEAR_FINGER_L, TRUE }, { "on the right finger", WEAR_FINGER_R, TRUE }, { "around the neck (1)", WEAR_NECK_1, TRUE }, { "around the neck (2)", WEAR_NECK_2, TRUE }, { "on the body", WEAR_BODY, TRUE }, { "over the head", WEAR_HEAD, TRUE }, { "on the legs", WEAR_LEGS, TRUE }, { "on the feet", WEAR_FEET, TRUE }, { "on the hands", WEAR_HANDS, TRUE }, { "on the arms", WEAR_ARMS, TRUE }, { "about the body", WEAR_ABOUT, TRUE }, { "around the waist", WEAR_WAIST, TRUE }, { "on the left wrist", WEAR_WRIST_L, TRUE }, { "on the right wrist", WEAR_WRIST_R, TRUE }, { "on the face", WEAR_FACE, TRUE }, { "as a shield", WEAR_SHIELD, TRUE }, { "first hand", WEAR_WIELD, TRUE }, { "second hand", WEAR_HOLD, TRUE }, { "third hand", WEAR_THIRD, TRUE }, { "fourth hand", WEAR_FOURTH, TRUE }, { "left scabbard", WEAR_SCABBARD_L,TRUE }, { "right scabbard", WEAR_SCABBARD_R,TRUE }, { "", 0 } }; /* * What is typed. * Neck2 should not be settable for loaded mobiles. */ const struct flag_type wear_loc_flags[] = { { "none", WEAR_NONE, TRUE }, { "light", WEAR_LIGHT, TRUE }, { "lfinger", WEAR_FINGER_L, TRUE }, { "rfinger", WEAR_FINGER_R, TRUE }, { "neck", WEAR_NECK_1, TRUE }, { "body", WEAR_BODY, TRUE }, { "head", WEAR_HEAD, TRUE }, { "legs", WEAR_LEGS, TRUE }, { "feet", WEAR_FEET, TRUE }, { "hands", WEAR_HANDS, TRUE }, { "arms", WEAR_ARMS, TRUE }, { "shield", WEAR_SHIELD, TRUE }, { "about", WEAR_ABOUT, TRUE }, { "waist", WEAR_WAIST, TRUE }, { "lwrist", WEAR_WRIST_L, TRUE }, { "rwrist", WEAR_WRIST_R, TRUE }, { "wielded", WEAR_WIELD, TRUE }, { "hold", WEAR_HOLD, TRUE }, { "face", WEAR_FACE, TRUE }, { "", 0, 0 } }; const struct flag_type weapon_flags[] = { { "hit", 0, TRUE }, { "slice", 1, TRUE }, { "stab", 2, TRUE }, { "slash", 3, TRUE }, { "whip", 4, TRUE }, { "claw", 5, TRUE }, { "blast", 6, TRUE }, { "pound", 7, TRUE }, { "crush", 8, TRUE }, { "grep", 9, TRUE }, { "bite", 10, TRUE }, { "pierce", 11, TRUE }, { "suck", 12, TRUE }, { "", 0, 0 } }; const struct flag_type container_flags[] = { { "closeable", 1, TRUE }, { "pickproof", 2, TRUE }, { "closed", 4, TRUE }, { "locked", 8, TRUE }, { "", 0, 0 } }; const struct flag_type liquid_flags[] = { { "water", 0, TRUE }, { "beer", 1, TRUE }, { "wine", 2, TRUE }, { "ale", 3, TRUE }, { "dark-ale", 4, TRUE }, { "whisky", 5, TRUE }, { "lemonade", 6, TRUE }, { "firebreather", 7, TRUE }, { "local-specialty", 8, TRUE }, { "slime-mold-juice", 9, TRUE }, { "milk", 10, TRUE }, { "tea", 11, TRUE }, { "coffee", 12, TRUE }, { "blood", 13, TRUE }, { "salt-water", 14, TRUE }, { "cola", 15, TRUE }, { "", 0, 0 } }; const struct flag_type newbit_flags[] = { { "newbie_pack", NEWBIE_PACK, TRUE }, { "third_hand", THIRD_HAND, TRUE }, { "fourth_hand", FOURTH_HAND, TRUE }, { "mudcop", NEW_MUDCOP, TRUE }, { "mcr", NEW_MCR, TRUE }, { "", 0, 0 } }; const struct flag_type plr_flags[] = { { "npc", PLR_IS_NPC, FALSE }, { "demon", PLR_DEMON, TRUE }, { "champion", PLR_CHAMPION, TRUE }, { "autoexits", PLR_AUTOEXIT, TRUE }, { "autoloot", PLR_AUTOLOOT, TRUE }, { "autosac", PLR_AUTOSAC, TRUE }, { "blank", PLR_BLANK, TRUE }, { "brief", PLR_BRIEF, TRUE }, { "combine", PLR_COMBINE, TRUE }, { "prompt", PLR_PROMPT, TRUE }, { "telnet_ga", PLR_TELNET_GA, TRUE }, { "holylight", PLR_HOLYLIGHT, TRUE }, { "wizinvis", PLR_WIZINVIS, TRUE }, { "ansi", PLR_ANSI, TRUE }, { "silence", PLR_SILENCE, TRUE }, { "incog", PLR_INCOG, TRUE }, { "log", PLR_LOG, TRUE }, { "deny", PLR_DENY, TRUE }, { "freeze", PLR_FREEZE, TRUE }, { "godless", PLR_GODLESS, TRUE }, { "watcher", PLR_WATCHER, TRUE }, { "drowsight", PLR_DROWSIGHT, TRUE }, { "embraced", PLR_EMBRACED, TRUE }, { "embracing", PLR_EMBRACING, TRUE }, { "acid", PLR_ACID, TRUE }, { "last_aggro", PLR_LAST_AGG, TRUE }, { "autocrack", PLR_AUTOCRACK, TRUE }, { "autohead", PLR_AUTOHEAD, TRUE }, { "", 0 , 0 } }; const struct flag_type imm_flags[] = { { "slash", IMM_SLASH, TRUE }, { "stab", IMM_STAB, TRUE }, { "smash", IMM_SMASH, TRUE }, { "animal", IMM_ANIMAL, TRUE }, { "misc", IMM_MISC, TRUE }, { "charm", IMM_CHARM, TRUE }, { "heat", IMM_HEAT, TRUE }, { "cold", IMM_COLD, TRUE }, { "lightning", IMM_LIGHTNING, TRUE }, { "acid", IMM_ACID, TRUE }, { "summon", IMM_SUMMON, TRUE }, { "voodoo", IMM_VOODOO, TRUE }, { "vampire", IMM_VAMPIRE, TRUE }, { "stake", IMM_STAKE, TRUE }, { "sunlight", IMM_SUNLIGHT, TRUE }, { "shielded", IMM_SHIELDED, TRUE }, { "hurl", IMM_HURL, TRUE }, { "backstab", IMM_BACKSTAB, TRUE }, { "kick", IMM_KICK, TRUE }, { "disarm", IMM_DISARM, TRUE }, { "steal", IMM_STEAL, TRUE }, { "sleep", IMM_SLEEP, TRUE }, { "drain", IMM_DRAIN, TRUE }, { "demon", IMM_DEMON, TRUE }, { "transport", IMM_TRANSPORT, TRUE }, { "travel", IMM_TRAVEL, TRUE }, { "", 0, 0 } }; const struct flag_type itema_flags[] = { { "shockshield", ITEMA_SHOCKSHIELD, TRUE }, { "fireshield", ITEMA_FIRESHIELD, TRUE }, { "iceshield", ITEMA_ICESHIELD, TRUE }, { "dbpass", ITEMA_DBPASS, TRUE }, { "chaosshield", ITEMA_CHAOSSHIELD, TRUE }, { "artifact", ITEMA_ARTIFACT, TRUE }, { "regenerate", ITEMA_REGENERATE, TRUE }, { "speed", ITEMA_SPEED, TRUE }, { "vorpal", ITEMA_VORPAL, TRUE }, { "peace", ITEMA_PEACE, TRUE }, { "rightsilver", ITEMA_RIGHT_SILVER, TRUE }, { "leftsilver", ITEMA_LEFT_SILVER, TRUE }, { "reflect", ITEMA_REFLECT, TRUE }, { "vision", ITEMA_VISION, TRUE }, { "vanish", ITEMA_VANISH, TRUE }, { "rager", ITEMA_RAGER, TRUE }, { "sunshield", ITEMA_SUNSHIELD, TRUE }, { "", 0, 0 } }; const struct flag_type position_flags[] = { { "dead", POS_DEAD, TRUE }, { "mortal", POS_MORTAL, TRUE }, { "incap", POS_INCAP, TRUE }, { "stunned", POS_STUNNED, TRUE }, { "sleeping", POS_SLEEPING, TRUE }, { "meditating",POS_MEDITATING, TRUE }, { "siting", POS_SITTING, TRUE }, { "resting", POS_RESTING, TRUE }, { "fighting", POS_FIGHTING, TRUE }, { "standing", POS_STANDING, TRUE }, { "", 0, 0 } }; const struct flag_type log_flags[] = { { "normal", LOG_NORMAL, TRUE }, { "always", LOG_ALWAYS, TRUE }, { "never", LOG_NEVER, TRUE }, { "", 0, 0 } }; const struct flag_type level_flags [] = { { "all", 0, TRUE }, { "mortal", 1, TRUE }, { "avatar", LEVEL_AVATAR, TRUE }, { "mage", LEVEL_APPRENTICE, TRUE }, { "ninja", LEVEL_NINJA, TRUE }, { "monk", LEVEL_MONK, TRUE }, { "builder", LEVEL_BUILDER, TRUE }, { "questmaker", LEVEL_QUESTMAKER, TRUE }, { "enforcer", LEVEL_ENFORCER, TRUE }, { "judge", LEVEL_JUDGE, TRUE }, { "highjudge", LEVEL_HIGHJUDGE, TRUE }, { "implementor", LEVEL_IMPLEMENTOR, TRUE }, { "", 0, 0 } }; const struct flag_type quest_flags [] = { { "artifact", QUEST_ARTIFACT, FALSE }, { "relic", QUEST_RELIC, TRUE }, { "mastery", QUEST_MASTERY, TRUE }, { "", 0, 0 } }; const struct flag_type world_flags [] = { { "fog", WORLD_FOG, TRUE }, { "rain", WORLD_RAIN, TRUE }, { "eclipse", WORLD_ECLIPSE, TRUE }, { "NICE", WORLD_NICE, TRUE }, { "DOUBLEEXP", WORLD_DOUBLEXP, FALSE }, { "WIZLOCKED", WIZLOCKED, TRUE }, { "copyover", WORLD_COPYOVER, FALSE }, { "reboot", WORLD_REBOOT , FALSE }, { "shutdown", WORLD_SHUTDOWN, FALSE }, { "random_dam", WORLD_RANDOMIZEDAM, TRUE }, { "statusarena", WORLD_STATUSARENA, TRUE }, { "deathmatch", WORLD_DEATHMATCH, TRUE }, { "", 0, 0 } }; const struct flag_type show_flags[] = { { "never", CSHOW_NEVER, TRUE }, { "vampire", CSHOW_VAMPIRE, TRUE }, { "garou", CSHOW_WEREWOLF, TRUE }, { "monk", CSHOW_MONK, TRUE }, { "demon", CSHOW_DEMON, TRUE }, { "priest", CSHOW_PRIEST, TRUE }, { "drow", CSHOW_DROW, TRUE }, { "mage", CSHOW_MAGE, TRUE }, { "angel", CSHOW_ANGEL, TRUE }, { "ninja", CSHOW_NINJA, TRUE }, { "mudcop", CSHOW_MUDCOP, TRUE }, { "", 0, 0 } }; const struct flag_type rt_flags [] = { { "lights", RT_LIGHTS, TRUE }, { "say", RT_SAY, TRUE }, { "enter", RT_ENTER, TRUE }, { "cast", RT_CAST, TRUE }, { "throwout", RT_THROWOUT, TRUE }, { "object", RT_OBJECT, TRUE }, { "mobile", RT_MOBILE, TRUE }, { "light", RT_LIGHT, TRUE }, { "dark", RT_DARK, TRUE }, { "open_lift", RT_OPEN_LIFT, TRUE }, { "close_lift", RT_CLOSE_LIFT, TRUE }, { "move_lift", RT_MOVE_LIFT, TRUE }, { "spell", RT_SPELL, TRUE }, { "portal", RT_PORTAL, TRUE }, { "teleport", RT_TELEPORT, TRUE }, { "action", RT_ACTION, TRUE }, { "return", RT_RETURN, TRUE }, { "personal", RT_PERSONAL, TRUE }, { "timer", RT_TIMER, TRUE }, { "", 0, 0 } }; const struct flag_type weap_flags [ ] = { { "flaming", WEAPON_FLAMING, TRUE }, { "poison", WEAPON_POISON, TRUE }, { "frost", WEAPON_FROST, TRUE }, { "holy", WEAPON_HOLY, TRUE }, { "", 0, 0 } };