/* ************************************************************************
*  file: bio.c ,     Definitions for biological systems   Part of Copper3 *
*  Usage :                                                                *
*  Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
************************************************************************* */

#ident	"@(#) $Id:$\n"
/* $Log:$
 */

#ifndef BIO_H
#define BIO_H

/**** Bio attributes ****/
#define BIO_NULL           0
/* physical */
#define BIO_STR            1
#define BIO_INT            2
#define BIO_WIS            3
#define BIO_DEX            4
#define BIO_CON            5
#define BIO_CHR            6

#define BIO_HITPOINTS      7
/* HitDice takes precedence over HitPoints */
#define BIO_HITDICE        8

#define BIO_MANA           9
#define BIO_MOVES          10

/* Body information */
#define BIO_LIMBS          11
#define BIO_LIMBS_PROPEL   12
#define BIO_LIMBS_GRASP    13
#define BIO_TAILS          14
#define BIO_SIGHTED        15
#define BIO_HEARING        16
#define BIO_SMELLING       17
#define BIO_ODOR_TYPE      18
#define BIO_ODOR_STRENGTH  19
#define BIO_SIZE           20
#define BIO_RESERVED1      21
#define BIO_RESERVED2      22
#define BIO_RESERVED3      23
#define BIO_RESERVED4      24
#define BIO_RESERVED5      25

/* Position - what positions can they logically hold? */
#define BIO_POS_SLEEP      26
#define BIO_POS_REST       27
#define BIO_POS_SIT        28
#define BIO_POS_SWIM       29
#define BIO_POS_STAND      30
#define BIO_POS_LEVITATE   31
#define BIO_POS_FLY        32
/* mobility */
#define BIO_MOBILE         33

/* Reproduction */
#define BIO_GESTATION      34
#define BIO_LITTER_SIZE    35
#define BIO_SEXES          36
#define BIO_SEX_RATIO      37

/* Living conditions */
#define BIO_DIET           38
#define BIO_PREF_TEMP      39
#define BIO_PREF_HUMIDITY  40
#define BIO_TEMP_TOLERATE  41
#define BIO_HUMID_TOLERATE 42
#define BIO_DAILY_CALS     43

#define MAX_BIO_ATTR       44

/* bio-info flags */
#define BI_INTRINSIC 1

#define BI_RANGE 2    /* These two are mutually exclusive */
#define BI_DICE 4

/* one per attribute */
struct bio_info {
    char *name;
    int low,high;
    int flags;
};

/* attribute information for particular bios */
struct bio_attr {
    int type;
    int value1,value2;
    struct bio_attr *next;
};

/* element in biology index table   */
struct bio_index_data
{
    int virtual;    /* virtual number of this mob               */
    int inherits;   /* what is the parent?                      */
    int count;      /* number of existing units of this bio     */
    char *name;     /* easier way to do lookups                 */
    char *sdesc;    /* simple description                       */
    char *ldesc;    /* long description                         */
    int loc;        /* where does the mob hang out?             */
    int freq;       /* how often does one come across them?     */
    struct bio_attr *attribs;
};

/* Where to put this is debatable, unless there is ever a fight.h */
#define DAM_BLOW	0	/* A "hit" with force */
#define DAM_SLASH	1
#define DAM_PIeRCe	2
#define DAM_GAS		3
#define DAM_POISON	4
#define DAM_PARALYSIS	5
#define DAM_HeAT	6
#define DAM_COLD	7
#define DAM_NUTRITION	8
#define DAM_VIRUS	9
#define DAM_BACTeRIA	10
#define DAM_BLeeD	11
#define DAM_ORGAN	12
#define DAM_FALLING     13


#endif /* !defined(BIO_H) */