summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mapmark.h
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2013-05-06 22:29:45 -0230
committerDracoOmega <draco_omega@live.com>2013-05-26 20:29:44 -0230
commita2da900e3c1d0e9cf3a9f1b7a358190b82058be0 (patch)
tree69dc58b57a4d1c00f45f9617819d46950a823e69 /crawl-ref/source/mapmark.h
parent5cbece94f41294ce3aa513c3f62fdd60497d6a40 (diff)
downloadcrawl-ref-a2da900e3c1d0e9cf3a9f1b7a358190b82058be0.tar.gz
crawl-ref-a2da900e3c1d0e9cf3a9f1b7a358190b82058be0.zip
Add cloud spread markers
These are map markers that create incrementally spreading clouds from a source point, with a given maximal radius, total cloud volume, and rate. New clouds will stop being produced when either the specific number have been created, or all available areas within the max radius are filled (this means that clouds can be made to flood corridors to a wider distance than the same cloud volume would produce on open terrain, similar to regular cloud spells) An agent can be specified, and blame will be properly assigned based on this, even if the agent dies before all the clouds are created.
Diffstat (limited to 'crawl-ref/source/mapmark.h')
-rw-r--r--crawl-ref/source/mapmark.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/crawl-ref/source/mapmark.h b/crawl-ref/source/mapmark.h
index e3f03e03fe..3f62abbdf4 100644
--- a/crawl-ref/source/mapmark.h
+++ b/crawl-ref/source/mapmark.h
@@ -212,6 +212,33 @@ public:
terrain_change_type change_type;
};
+class map_cloud_spreader_marker : public map_marker
+{
+public:
+ map_cloud_spreader_marker(const coord_def &pos = coord_def(0, 0),
+ cloud_type type = CLOUD_NONE,
+ int speed = 10, int amount = 35,
+ int max_radius = LOS_RADIUS, int dur = 10,
+ actor* agent = NULL);
+
+ void write(writer &) const;
+ void read(reader &);
+ map_marker *clone() const;
+ string debug_describe() const;
+
+ static map_marker *read(reader &, map_marker_type);
+
+public:
+ cloud_type ctype;
+ int speed;
+ int remaining;
+ int max_rad;
+ int duration;
+ int speed_increment;
+ mid_t agent_mid;
+ kill_category kcat;
+};
+
// A marker powered by Lua.
class map_lua_marker : public map_marker, public dgn_event_listener
{