/***************************************************************************
* 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 }
};