/* * ATTACK ROUTINES */ #define ATT_PHYSICAL 0 #define ATT_FIRE 1 #define ATT_COLD 2 #define ATT_ACID 3 #define ATT_SHOCK 4 #define MAX_ATTACK 5 #define ATT_LEAP 0 #define ATT_DEFAULT 1 #define ATT_KICK 2 #define ATT_PUNCH 3 #define ATT_BITE 4 #define ATT_SPIN_KICK 5 #define ATT_BASH 6 #define ATT_BACKSTAB 7 #define ATT_FLEE 8 #define ATT_GARROTE 9 #define ATT_CHARGE 10 #define ATT_GOUGE 11 #define ATT_MELEE 12 bool attack ( char_data*, char_data*, const char*, obj_data*, int, int, int = ATT_PHYSICAL ); bool is_entangled ( char_data*, const char* ); char_data* get_victim ( char_data*, char*, char* ); const char* get_attack ( char_data*, obj_data* ); void add_round ( species_data*, int ); int initiative ( char_data* ); int response ( char_data* ); int player_round ( char_data*, char_data* ); int mob_round ( char_data*, char_data* ); int bash_attack ( char_data*, char_data* ); int gouge_attack ( char_data*, char_data* ); void init_attack ( char_data*, char_data* = NULL ); void react_attack ( char_data*, char_data* ); void renter_combat ( char_data* ); void stop_fight ( char_data* ); void set_attack ( char_data*, char_data* ); bool jump_feet ( char_data* ); void leap_message ( char_data*, char_data* ); void fight_round ( char_data* ); bool can_kill ( char_data*, char_data* = NULL, bool = TRUE ); bool can_pkill ( char_data*, char_data* = NULL, bool = TRUE ); bool in_sanctuary ( char_data*, bool = TRUE ); char_data* opponent ( char_data* ); char_data* has_enemy ( char_data* ); /* * DAMAGE ROUTINES */ const char* condition_short ( char_data* ); const char* condition_short ( char_data*, char_data* ); const char* word_physical ( int ); #define cd char_data bool damage_fire ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_cold ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_mind ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_physical ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_shock ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_magic ( cd*, cd*, int, const char*, bool = FALSE ); bool damage_acid ( cd*, cd*, int, const char*, bool = FALSE ); bool inflict ( cd*, cd*, int, char* ); void dam_message ( cd*, cd*, int, const char*, const char* ); void dam_local ( cd*, cd*, int, const char*, const char* ); #undef cd extern index_data physical_index []; extern index_data electric_index []; extern index_data fire_index []; extern index_data cold_index []; extern index_data acid_index []; /* * DEATH */ void death_message ( char_data* ); /* * EXP ROUTINES */ void gain_exp ( char_data*, char_data*, int, const char* = NULL ); void add_exp ( char_data*, int, const char* = NULL ); int exp_for_level ( int ); int death_exp ( char_data*, char_data* ); void disburse_exp ( char_data* ); void group_gain ( char_data*, char_data*, float ); inline int exp_for_level( char_data* ch ) { return exp_for_level( ch->shdata->level ); } /* * ENEMY ROUTINES */ bool is_enemy ( char_data*, char_data* ); int damage_done ( char_data*, char_data* ); void add_enemy ( char_data*, char_data* ); void clear_enemies ( char_data* ); void extract ( enemy_data*& ); void record_damage ( char_data*, char_data*, int ); void share_enemies ( char_data*, char_data* ); /* * FLEE ROUTINES */ bool check_wimpy ( char_data* ); bool attempt_flee ( char_data*, exit_data* = NULL ); /* * WEAPONS */ inline const char* weapon_class( obj_clss_data* obj ) { if( obj->value[3] >= 0 && obj->value[3] < MAX_WEAPON ) return skill_table[ WEAPON_UNARMED+obj->value[3] ].name; return "none"; } /* * SPAM ROUTINES */ void spam_char ( char_data*, const char* ); void spam_room ( const char*, char_data*, char_data* ); template < class T > void spam_char( char_data* ch, const char* text, T item ) { if( ch->link == NULL || !is_set( &ch->pcdata->message, MSG_MISSES ) ) return; send( ch, text, item ); return; } template < class S, class T > void spam_char( char_data* ch, const char* text, S item1, T item2 ) { if( ch->link == NULL || !is_set( &ch->pcdata->message, MSG_MISSES ) ) return; send( ch, text, item1, item2 ); return; } template < class S, class T, class U > void spam_char( char_data* ch, const char* text, S item1, T item2, U item3 ) { if( ch->link == NULL || !is_set( &ch->pcdata->message, MSG_MISSES ) ) return; send( ch, text, item1, item2, item3 ); return; }