rasputin/bin/
rasputin/cnf/
rasputin/doc/cwg/
rasputin/lib/
rasputin/lib/etc/
rasputin/lib/etc/boards/
rasputin/lib/house/
rasputin/lib/misc/
rasputin/lib/plralias/A-E/
rasputin/lib/plralias/F-J/
rasputin/lib/plralias/K-O/
rasputin/lib/plralias/P-T/
rasputin/lib/plralias/U-Z/
rasputin/lib/plralias/ZZZ/
rasputin/lib/plrfiles/
rasputin/lib/plrfiles/A-E/
rasputin/lib/plrfiles/F-J/
rasputin/lib/plrfiles/K-O/
rasputin/lib/plrfiles/P-T/
rasputin/lib/plrfiles/U-Z/
rasputin/lib/plrfiles/ZZZ/
rasputin/lib/plrobjs/
rasputin/lib/plrobjs/A-E/
rasputin/lib/plrobjs/F-J/
rasputin/lib/plrobjs/K-O/
rasputin/lib/plrobjs/P-T/
rasputin/lib/plrobjs/U-Z/
rasputin/lib/plrobjs/ZZZ/
rasputin/lib/plrvars/A-E/
rasputin/lib/plrvars/F-J/
rasputin/lib/plrvars/K-O/
rasputin/lib/plrvars/P-T/
rasputin/lib/plrvars/U-Z/
rasputin/lib/plrvars/ZZZ/
rasputin/lib/world/gld/
rasputin/lib/world/trg/
rasputin/src/
rasputin/src/doc/
/***********************************************************************
** FEATS.H                                                            **
** Header file for the Gates of Krynn Feat System.                    **
** Initial code by Paladine (Stephen Squires)                         **
** Created Thursday, September 5, 2002                                **
**                                                                    **
***********************************************************************/



/* Functions defined in feats.c */
int is_proficient_with_armor(const struct char_data *ch, int armor_type);
int is_proficient_with_weapon(const struct char_data *ch, int weapon_type);
int find_feat_num(char *name);
int feat_to_subfeat(int feat);

/* Feats defined below up to MAX_FEATS */

#define FEAT_UNDEFINED				0
#define FEAT_ALERTNESS				1
#define FEAT_ARMOR_PROFICIENCY_HEAVY		3
#define FEAT_ARMOR_PROFICIENCY_LIGHT		4
#define FEAT_ARMOR_PROFICIENCY_MEDIUM		5
#define FEAT_BLIND_FIGHT			6
#define FEAT_BREW_POTION			7
#define FEAT_CLEAVE				8
#define FEAT_COMBAT_CASTING			9
#define FEAT_COMBAT_REFLEXES			10
#define FEAT_CRAFT_MAGICAL_ARMS_AND_ARMOR	11
#define FEAT_CRAFT_ROD				12
#define FEAT_CRAFT_STAFF			13
#define FEAT_CRAFT_WAND				14
#define FEAT_CRAFT_WONDEROUS_ITEM		15
#define FEAT_DEFLECT_ARROWS			16
#define FEAT_DODGE				17
#define FEAT_EMPOWER_SPELL			18
#define FEAT_ENDURANCE				19
#define FEAT_ENLARGE_SPELL			20
#define FEAT_WEAPON_PROFICIENCY_BASTARD_SWORD	21
#define FEAT_EXPERTISE				22
#define FEAT_EXTEND_SPELL			23
#define FEAT_EXTRA_TURNING			24
#define FEAT_FAR_SHOT				25
#define FEAT_FORGE_RING				26
#define FEAT_GREAT_CLEAVE			27
#define FEAT_GREAT_FORTITUDE			28
#define FEAT_HEIGHTEN_SPELL			29
#define FEAT_IMPROVED_BULL_RUSH			30
#define FEAT_IMPROVED_CRITICAL			31
/* lots of free slots here */
#define FEAT_IMPROVED_DISARM			61
#define FEAT_IMPROVED_INITIATIVE		62
#define FEAT_IMPROVED_TRIP			63
#define FEAT_IMPROVED_TWO_WEAPON_FIGHTING	64
#define FEAT_IMPROVED_UNARMED_STRIKE		65
#define FEAT_IRON_WILL				66
#define FEAT_LEADERSHIP				67
#define FEAT_LIGHTNING_REFLEXES			68
#define FEAT_MARTIAL_WEAPON_PROFICIENCY		69
#define FEAT_MAXIMIZE_SPELL			70
#define FEAT_MOBILITY				71
#define FEAT_MOUNTED_ARCHERY			72
#define FEAT_MOUNTED_COMBAT			73
#define FEAT_POINT_BLANK_SHOT			74
#define FEAT_POWER_ATTACK			75
#define FEAT_PRECISE_SHOT			76
#define FEAT_QUICK_DRAW				77
#define FEAT_QUICKEN_SPELL			78
#define FEAT_RAPID_SHOT				79
#define FEAT_RIDE_BY_ATTACK			80
#define FEAT_RUN				81
#define FEAT_SCRIBE_SCROLL			82
#define FEAT_SHIELD_PROFICIENCY			83
#define FEAT_SHOT_ON_THE_RUN			84
#define FEAT_SILENT_SPELL			85
#define FEAT_SIMPLE_WEAPON_PROFICIENCY		86
#define FEAT_SKILL_FOCUS			87
#define FEAT_SPELL_FOCUS			88
#define FEAT_SPELL_MASTERY			96
#define FEAT_SPELL_PENETRATION			97
#define FEAT_SPIRITED_CHARGE			98
#define FEAT_SPRING_ATTACK			99
#define FEAT_STILL_SPELL			100
#define FEAT_STUNNING_FIST			101
#define FEAT_SUNDER				102
#define FEAT_TOUGHNESS				103
#define FEAT_TRACK				104
#define FEAT_TRAMPLE				105
#define FEAT_TWO_WEAPON_FIGHTING		106
#define FEAT_WEAPON_FINESSE			107
/* lots of free slots here */
#define FEAT_WEAPON_FOCUS			137
/* lots of free slots here */
#define FEAT_WEAPON_SPECIALIZATION		167
/* lots of free slots here */
#define FEAT_WHIRLWIND_ATTACK			197
#define FEAT_WEAPON_PROFICIENCY_DRUID		198
#define FEAT_WEAPON_PROFICIENCY_ROGUE		199
#define FEAT_WEAPON_PROFICIENCY_MONK		200
#define FEAT_WEAPON_PROFICIENCY_WIZARD		201
#define FEAT_WEAPON_PROFICIENCY_ELF		202
#define FEAT_ARMOR_PROFICIENCY_SHIELD		203
#define FEAT_SNEAK_ATTACK			204
/* Evasion and improved evasion are not actually feats, but we treat them like feats
 * just to make it easier */
#define FEAT_EVASION				205
#define FEAT_IMPROVED_EVASION			206
#define FEAT_ACROBATIC				207
#define FEAT_AGILE				208
#define FEAT_ANIMAL_AFFINITY			209
#define FEAT_ATHLETIC				210
#define FEAT_AUGMENT_SUMMONING			211
#define FEAT_COMBAT_EXPERTISE			212
#define FEAT_DECEITFUL				213
#define FEAT_DEFT_HANDS				214
#define FEAT_DIEHARD				215
#define FEAT_DILIGENT				216
#define FEAT_ESCHEW_MATERIALS			217
#define FEAT_EXOTIC_WEAPON_PROFICIENCY		218
#define FEAT_GREATER_SPELL_FOCUS		219
#define FEAT_GREATER_SPELL_PENETRATION		220
#define FEAT_GREATER_TWO_WEAPON_FIGHTING	221
#define FEAT_GREATER_WEAPON_FOCUS		222
#define FEAT_GREATER_WEAPON_SPECIALIZATION	223
#define FEAT_IMPROVED_COUNTERSPELL		224
#define FEAT_IMPROVED_FAMILIAR			225
#define FEAT_IMPROVED_FEINT			226
#define FEAT_IMPROVED_GRAPPLE			227
#define FEAT_IMPROVED_OVERRUN			228
#define FEAT_IMPROVED_PRECISE_SHOT		229
#define FEAT_IMPROVED_SHIELD_BASH		230
#define FEAT_IMPROVED_SUNDER			231
#define FEAT_IMPROVED_TURNING			232
#define FEAT_INVESTIGATOR			233
#define FEAT_MAGICAL_APTITUDE			234
#define FEAT_MANYSHOT				235
#define FEAT_NATURAL_SPELL			236
#define FEAT_NEGOTIATOR				237
#define FEAT_NIMBLE_FINGERS			238
#define FEAT_PERSUASIVE				239
#define FEAT_RAPID_RELOAD			240
#define FEAT_SELF_SUFFICIENT			241
#define FEAT_STEALTHY				242
#define FEAT_ARMOR_PROFICIENCY_TOWER_SHIELD	243
#define FEAT_TWO_WEAPON_DEFENSE			244
#define FEAT_WIDEN_SPELL			245
/* These are not actually feats, they are really class special abilities */
#define FEAT_CRIPPLING_STRIKE			246
#define FEAT_DEFENSIVE_ROLL			247
#define FEAT_OPPORTUNIST			248
#define FEAT_SKILL_MASTERY			249
#define FEAT_SLIPPERY_MIND			250
#define FEAT_KI_STRIKE				251
/* End of non-feat block, more feats below */
#define FEAT_SNATCH_ARROWS			252

#define NUM_FEATS_DEFINED			252


// Below are the various weapon type defines

#define	WEAPON_TYPE_UNDEFINED		0
#define WEAPON_TYPE_UNARMED		1
#define WEAPON_TYPE_DAGGER		2
#define WEAPON_TYPE_MACE		3
#define WEAPON_TYPE_SICKLE		4
#define WEAPON_TYPE_SPEAR		5
#define WEAPON_TYPE_STAFF		6
#define WEAPON_TYPE_CROSSBOW		7
#define WEAPON_TYPE_LONGBOW		8
#define WEAPON_TYPE_SHORTBOW		9
#define WEAPON_TYPE_SLING		10
#define WEAPON_TYPE_THROWN		11
#define WEAPON_TYPE_HAMMER		12
#define WEAPON_TYPE_LANCE		13
#define WEAPON_TYPE_FLAIL		14
#define WEAPON_TYPE_LONGSWORD		15
#define WEAPON_TYPE_SHORTSWORD		16
#define WEAPON_TYPE_GREATSWORD		17
#define WEAPON_TYPE_RAPIER		18
#define WEAPON_TYPE_SCIMITAR		19
#define WEAPON_TYPE_POLEARM		20
#define WEAPON_TYPE_CLUB		21
#define WEAPON_TYPE_BASTARD_SWORD	22
#define WEAPON_TYPE_MONK_WEAPON		23
#define WEAPON_TYPE_DOUBLE_WEAPON	24
#define WEAPON_TYPE_AXE			25
#define WEAPON_TYPE_WHIP		26

#define MAX_WEAPON_TYPES		26

// Below are the various armor type defines

#define	ARMOR_TYPE_UNDEFINED		0
#define	ARMOR_TYPE_LIGHT		1
#define	ARMOR_TYPE_MEDIUM		2
#define	ARMOR_TYPE_HEAVY		3
#define	ARMOR_TYPE_SHIELD		4

#define MAX_ARMOR_TYPES			4

/* Below is the structure for a feat */

struct feat_info {

  char *name;		// The name of the feat to be displayed to players
  int in_game;		// TRUE or FALSE, is the feat in the game yet?
  int can_learn;	// TRUE or FALSE, can the feat be learned or is it an automatic feat?
  int can_stack;	// TRUE or FALSE, can the feat be learned more than once?

};

extern struct feat_info feat_list[];