+ /**
+ * Called when hit by a fire bullet, and is_flammable() returns true
+ */
+ virtual void ignite();
+
+ /**
+ * Called to revert a badguy when is_ignited() returns true
+ */
+ virtual void extinguish();
+
+ /**
+ * Returns whether to call ignite() when a badguy gets hit by a fire bullet
+ */
+ virtual bool is_flammable() const;
+
+ /**
+ * Returns whether this badguys is currently on fire
+ */
+ bool is_ignited() const;
+
+ /**
+ * Called when hit by an ice bullet, and is_freezable() returns true.
+ */
+ virtual void freeze();
+
+ /**
+ * Called to unfreeze the badguy.
+ */
+ virtual void unfreeze();
+
+ virtual bool is_freezable() const;
+
+ bool is_frozen() const;
+