muddy/
muddy/CVS/
muddy/area/
muddy/area/CVS/
muddy/clans/CVS/
muddy/classes/CVS/
muddy/doc/
muddy/doc/CVS/
muddy/etc/CVS/
muddy/etc/i3/
muddy/etc/i3/CVS/
muddy/imc/CVS/
muddy/lang/CVS/
muddy/licenses/CVS/
muddy/msgdb/CVS/
muddy/new/CVS/
muddy/notes/
muddy/player/
muddy/races/CVS/
muddy/religions/CVS/
muddy/src/CVS/
muddy/src/comm/CVS/
muddy/src/db/CVS/
muddy/src/intermud/
muddy/src/intermud/CVS/
muddy/src/irc/CVS/
muddy/src/olc/CVS/
/* $Id: grep.h,v 1.666 2004/09/20 10:49:48 shrike Exp $ */

/************************************************************************************
 *    Copyright 2004 Astrum Metaphora consortium                                    *
 *                                                                                  *
 *    Licensed under the Apache License, Version 2.0 (the "License");               *
 *    you may not use this file except in compliance with the License.              *
 *    You may obtain a copy of the License at                                       *
 *                                                                                  *
 *    http://www.apache.org/licenses/LICENSE-2.0                                    *
 *                                                                                  *
 *    Unless required by applicable law or agreed to in writing, software           *
 *    distributed under the License is distributed on an "AS IS" BASIS,             *
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.      *
 *    See the License for the specific language governing permissions and           *
 *    limitations under the License.                                                *
 *                                                                                  *
 ************************************************************************************/

/************************************************************************************
 *  (c) 2004 by Shrike aka Sauron                                                   *
 ************************************************************************************/



#ifndef __GREP_H
#define __GREP_H

#include "typedef.h"
#include "conquer.h"

#define SORT_INVALID -1
#define SORT_NONE     0
#define SORT_LEVEL    1
#define SORT_SVS      2
#define SORT_HR       3
#define SORT_DR       4
#define SORT_AVE      5
#define SORT_SAF      6
#define SORT_AC       7
#define SORT_ALEVEL   8
#define SORT_VNUM     9

#define SORT_INT     10
#define SORT_STR     11
#define SORT_DEX     12
#define SORT_WIS     13
#define SORT_CON     14
#define SORT_CHA     15
#define SORT_LCK     16

#define SORT_HP      17
#define SORT_MANA    18
#define SORT_MOVE    19

#define SORT_V0      20
#define SORT_V1      21
#define SORT_V2      22
#define SORT_V3      23
#define SORT_V4      24

#define RSORT_V0     30
#define RSORT_V1     31
#define RSORT_V2     32
#define RSORT_V3     33
#define RSORT_V4     34


typedef struct mgrep_mob_t      mgrep_mob_t;
typedef struct ogrep_obj_t      ogrep_obj_t;
typedef struct rgrep_room_t     rgrep_room_t;


// ----------------------------------------------------------------------
// structures for mobs
// ----------------------------------------------------------------------

struct mgrep_mob_t
{
     const char        *name;
     int               vnum;
     int               level;
     //SPEC_FUN *        spec_fun;
     //SHOP_DATA *       pShop;
     int               mptrig;
     //int               mptrig_types;
     //int               fvnum;
     //int               group;
     //int               count;
     //int               killed;
     mlstring *        short_descr;
     flag64_t          affected_by;
     int               alignment;
     int               hitroll;
     int               hit[3];
     int               mana[3];
     int               damage[3];
     int               ac[4];
     int               dam_type;
     flag64_t          act;
     flag64_t          off_flags;
     flag64_t          immunes;          /* immunities */
     sh_int            resists[MAX_DAM]; /* resistances/vulnerabilities */
     //flag64_t          start_pos;
     //flag64_t          default_pos;
     flag64_t          sex;
     int               race;
     int               wealth;
     flag64_t          form;
     flag64_t          parts;
     int               pcnt;
     int               size;
     //const char *      material;
     flag64_t          practicer;
     int               clan;
     int               invis_level;    /* mobinvis level */
     mlstring *        listen_data; 
};

// ----------------------------------------------------------------------
// structures for all object classes
// ----------------------------------------------------------------------

struct ogrep_obj_t
{
     const char   *name;
     int           vnum;
     int           item_type;
     int           level;
     int           limit;
     int           wear_flags;
     int           hr;
     int           dr;
     int           svs;
     int           saf;
     int           hp;
     int           mana;
     int           move;
     int           dice_number;
     int           dice_type;
     int           ave;
     int           stat_str;
     int           stat_int;
     int           stat_wis;
     int           stat_dex;
     int           stat_con;
     int           stat_cha;
     int           stat_lck;
     
     int           opcods;
     int           objprogs;
     
     int           apply_level;
      
     int           ac;
     int           v0;
     int           v1;
     int           v2;
     int           v3;
     int           v4;
     
     const char   *material;

};

// ----------------------------------------------------------------------
// structures for room
// ----------------------------------------------------------------------


struct rgrep_room_t
{
    const char *        name;
    const char *        owner;
    int                 clan;
    int                 vnum;
    flag64_t            room_flags;
    int                 light;
    flag64_t            sector_type;
    int                 heal_rate;
    int                 mana_rate;
    AFFECT_DATA *       affected;
    int                 affected_by;
    int                 space;
    MPTRIG *            rprogs;        /* Room olc */
    long                rprog_flags;
    sh_int              rprog_delay;

    ext_flag_t          progtypes;
    
};

typedef struct grep_sortmode GREP_SORTMODE;

#define SORT_ARMOR       (A)
#define SORT_WEAPON      (B)
#define SORT_PILL        (C)

#define SORT_MOB         (aa)
#define SORT_ROOM        (bb)

struct grep_sortmode
{
    char        *name          ; // command name
    int          sort_value    ;
    int          sort_mode     ;
};

#if defined _OBJ_GREP
static GREP_SORTMODE    grep_sortmode [] =
{
    { "int",             SORT_INT,           SORT_WEAPON | SORT_ARMOR   },
    { "str",             SORT_STR,           SORT_WEAPON | SORT_ARMOR   },
    { "dex",             SORT_DEX,           SORT_WEAPON | SORT_ARMOR   },
    { "wis",             SORT_WIS,           SORT_WEAPON | SORT_ARMOR   },
    { "con",             SORT_CON,           SORT_WEAPON | SORT_ARMOR   },
    { "cha",             SORT_CHA,           SORT_WEAPON | SORT_ARMOR   },
    { "lck",             SORT_LCK,           SORT_WEAPON | SORT_ARMOR   },
    
    { "hp",              SORT_HP,            SORT_WEAPON | SORT_ARMOR   },
    { "mana",            SORT_MANA,          SORT_WEAPON | SORT_ARMOR   },
    { "move",            SORT_MOVE,          SORT_WEAPON | SORT_ARMOR   },
    
    { "level",           SORT_LEVEL,         SORT_WEAPON | SORT_ARMOR |SORT_PILL  },
    { "svs",             SORT_SVS,           SORT_WEAPON | SORT_ARMOR   },
    { "hr",              SORT_HR,            SORT_WEAPON | SORT_ARMOR   },
    { "dr",              SORT_DR,            SORT_WEAPON | SORT_ARMOR   },
    { "ave",             SORT_AVE,           SORT_WEAPON | SORT_ARMOR   },
    { "saf",             SORT_SAF,           SORT_WEAPON | SORT_ARMOR   },
    
    { "pierce",          SORT_V0,            SORT_ARMOR    },
    { "bash",            SORT_V1,            SORT_ARMOR    },
    { "slash",           SORT_V2,            SORT_ARMOR    },
    { "exotic",          SORT_V3,            SORT_ARMOR    },
    
    { "slevel",          SORT_V0,            SORT_PILL    },
    { "spell1",          SORT_V1,            SORT_PILL    },
    { "spell2",          SORT_V2,            SORT_PILL    },
    { "spell3",          SORT_V3,            SORT_PILL    },
    { "spell4",          SORT_V4,            SORT_PILL    },
    
    { "vnum",            SORT_VNUM,          SORT_MOB | SORT_ROOM },
    
    { NULL }
};
#endif

/*
#define ITEM_LIGHT          1
#define ITEM_STAFF          4
#define ITEM_TREASURE       8    // no extra data
#define ITEM_CLOTHING       11   // no extra data
#define ITEM_FURNITURE      12
#define ITEM_TRASH          13   // no extra data
#define ITEM_CONTAINER      15
#define ITEM_DRINK_CON      17
#define ITEM_KEY            18   // no extra data
#define ITEM_FOOD           19
#define ITEM_MONEY          20
#define ITEM_BOAT           22   // no extra data
#define ITEM_CORPSE_NPC     23   // no extra data
#define ITEM_CORPSE_PC      24   // no extra data
#define ITEM_FOUNTAIN       25
#define ITEM_PROTECT        27   // no extra data
#define ITEM_MAP            28   // no extra data
#define ITEM_WARP_STONE     30   // no extra data
#define ITEM_ROOM_KEY       31   // no extra data
#define ITEM_GEM            32   // no extra data
#define ITEM_JEWELRY        33   // no extra data
#define ITEM_JUKEBOX        34   // no extra data
#define ITEM_TATTOO         35   // no extra data
#define ITEM_POLE           36
#define ITEM_SCABBARD       37
#define ITEM_SLOT_MACHINE   39 
#define ITEM_RIDDLE         40
#define ITEM_RALTAR         41
*/

// ----------------------------------------------------------------------
// functions
// ----------------------------------------------------------------------

DECLARE_DO_FUN (do_ogrep)       ;
DECLARE_DO_FUN (ogrep_weapons)  ; // ITEM_WEAPON         5
DECLARE_DO_FUN (ogrep_armor)    ; // ITEM_ARMOR          9
DECLARE_DO_FUN (ogrep_pill)     ;
DECLARE_DO_FUN (ogrep_help)     ;

DECLARE_DO_FUN (do_mgrep)       ;
DECLARE_DO_FUN (mgrep_level)    ; 
DECLARE_DO_FUN (mgrep_area)     ;
DECLARE_DO_FUN (mgrep_name)     ;
DECLARE_DO_FUN (mgrep_act)      ;
DECLARE_DO_FUN (mgrep_off)      ;
DECLARE_DO_FUN (mgrep_affected) ;
DECLARE_DO_FUN (mgrep_immunes)  ;
DECLARE_DO_FUN (mgrep_help)     ;
DECLARE_DO_FUN (mgrep_shop)     ;

// room 

void rgrep_help    ( CHAR_DATA *ch, const char *arg ); 
void rgrep_sector  ( CHAR_DATA *ch, const char *arg ); 
void rgrep_flag    ( CHAR_DATA *ch, const char *arg ); 
void rgrep_reset   ( CHAR_DATA *ch, const char *arg ); 

void ogrep_help       ( CHAR_DATA *ch, const char *arg ); 
void ogrep_weapons    ( CHAR_DATA *ch, const char *arg ); 
void ogrep_armor      ( CHAR_DATA *ch, const char *arg ); 
void ogrep_pill       ( CHAR_DATA *ch, const char *arg ); 
void ogrep_wear       ( CHAR_DATA *ch, const char *arg ); 
void ogrep_portal     ( CHAR_DATA *ch, const char *arg ); 
void ogrep_window     ( CHAR_DATA *ch, const char *arg ); 
void ogrep_potion     ( CHAR_DATA *ch, const char *arg );
void ogrep_scroll     ( CHAR_DATA *ch, const char *arg );
void ogrep_material   ( CHAR_DATA *ch, const char *arg );

void mgrep_help       ( CHAR_DATA *ch, const char *arg );
void mgrep_level      ( CHAR_DATA *ch, const char *arg );
void mgrep_area       ( CHAR_DATA *ch, const char *arg );
void mgrep_name       ( CHAR_DATA *ch, const char *arg );
void mgrep_act        ( CHAR_DATA *ch, const char *arg );
void mgrep_off        ( CHAR_DATA *ch, const char *arg );
void mgrep_affected   ( CHAR_DATA *ch, const char *arg );
void mgrep_immunes    ( CHAR_DATA *ch, const char *arg );
void mgrep_shop       ( CHAR_DATA *ch, const char *arg );
void mgrep_race       ( CHAR_DATA *ch, const char *arg );

int    get_sort_mode (const char* argument, int mode);
void   sort_show     (CHAR_DATA *ch, int mode);
char * percent_color (int value, int max_value);

#endif