summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-util.h
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/mon-util.h')
-rw-r--r--crawl-ref/source/mon-util.h34
1 files changed, 28 insertions, 6 deletions
diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h
index d5db3061c8..3c39e81179 100644
--- a/crawl-ref/source/mon-util.h
+++ b/crawl-ref/source/mon-util.h
@@ -116,6 +116,8 @@ enum mons_class_flags
M_ARCHER = (1<<23), // gets various archery boosts
+ M_WALL_SHIELDED = (1<<24), // Shielded from attacks if in wall
+
M_SPECIAL_ABILITY = (1<<26), // XXX: eventually make these spells?
M_NO_SKELETON = (1<<29), // boneless corpses
@@ -243,6 +245,23 @@ struct mon_attack_def
}
};
+// Amount of monster->speed_increment used by different actions; defaults
+// to 10.
+struct mon_energy_usage
+{
+ char move;
+ char swim;
+ char attack;
+ char missile; // Arrows/crossbows/etc
+ char spell;
+ char special;
+ char item; // Using an item (i.e., drinking a potion)
+
+ // Percent of monster->speed used when picking up an item; defaults
+ // to 100%
+ char pickup_percent;
+};
+
struct monsterentry
{
short mc; // monster number
@@ -278,17 +297,16 @@ struct monsterentry
// hp will be around 135 each time.
unsigned hpdice[4];
- char AC; // armour class
-
- char ev; // evasion
-
- char speed, speed_inc; // duh!
-
+ char AC; // armour class
+ char ev; // evasion
mon_spellbook_type sec;
corpse_effect_type corpse_thingy;
zombie_size_type zombie_size;
shout_type shouts;
mon_intel_type intel;
+
+ char speed; // How quickly speed_increment increases
+ mon_energy_usage energy_usage; // And how quickly it decreases
mon_itemuse_type gmon_use;
size_type size;
};
@@ -581,6 +599,8 @@ bool mons_looks_distracted(const monsters *m);
bool check_mons_resist_magic( const monsters *monster, int pow );
bool mons_class_is_stationary(int monsclass);
+bool mons_class_is_confusable(int monsclass);
+bool mons_class_is_slowable(int monsclass);
bool mons_is_stationary(const monsters *mons);
bool mons_is_insubstantial(int type);
bool mons_is_submerged( const monsters *mon );
@@ -634,4 +654,6 @@ std::string get_mon_shape_str(const monsters *mon);
std::string get_mon_shape_str(const int type);
std::string get_mon_shape_str(const mon_body_shape shape);
+bool mons_class_can_pass(const int mclass, const dungeon_feature_type grid);
+
#endif