/* * CthulhuMud */ /* Define combat data structure... */ typedef struct combat_data COMBAT_DATA; struct combat_data { CHAR_DATA *attacker; CHAR_DATA *defender; OBJ_DATA *atk_primary_weapon; OBJ_DATA *atk_secondary_weapon; OBJ_DATA *def_primary_weapon; OBJ_DATA *def_secondary_weapon; bool atk_dual; OBJ_DATA *atk_weapon; short atk_sn; int atk_skill; int difficulty; int atk_dt; int atk_type; int atk_dam_type; int atk_blk_type; char *atk_desc; bool atk_berserk; OBJ_DATA *def_shield; int def_h2h_skill; int damage; int damage_mult; }; /* Function declarations... */ extern void one_hit(CHAR_DATA *ch, CHAR_DATA *victim, int dt, bool dual, int atk_gsn, int difficulty ); extern bool apply_damage( COMBAT_DATA *cd ); extern COMBAT_DATA *getCDB(CHAR_DATA *ch, CHAR_DATA *victim, int dt, bool dual, int atk_gsn, int diff ); extern bool check_spell_hit(COMBAT_DATA *cd, int spell_roll); bool env_damage( CHAR_DATA *ch, int dam, int dam_type, char *msg1, char *msg2); /* Define constants for blocking and parrying... */ #define BLOCK_NONE (0) #define BLOCK_SHIELD (A) #define BLOCK_PARRY (B) #define BLOCK_DODGE (C) #define BLOCK_ARMOR (D) #define BLOCK_ABSORB (E) #define BLOCK_NOPARRY (A|C|D|E) #define BLOCK_ALL (A|B|C|D|E) #define BLOCK_COMBAT (A|B|C|D) #define BLOCK_NOSHIELD (B|C|D) #define BLOCK_BALL (A|D|E) #define BLOCK_BOLT (A|C|D|E) #define BLOCK_LIGHTNING (D|E) #define BLOCK_LIGHT (A|E) extern int can_block_dam[]; /* Define constants for armour damage division... */ /* Ever ARMOR_DAM_PTS of armour reduces damage by half... */ #define ARMOR_DAM_PTS 150 #define ARMOR_DAM_PTS2 300 /* Maximum armour is 600 pts - 1/16th damage */ #define ARMOR_DAM_MAX 600 /* Maximum damage that can be delivered... */ #define MAX_DAMAGE 12000