via  7c96f4ae32351ddd8a955ac1e4ad59c43c03ab2c (commit)
      from  1b65636845c45b6149175d3b97b7397efe83ffd6 (commit)

-----------------------------------------------------------------------
commit 7c96f4ae32351ddd8a955ac1e4ad59c43c03ab2c
Author: Adam Borowski <kilob...@angband.pl>
Date:   Thu Feb 17 21:07:44 2011 +0100

    Tornado+Leda -> no flying.

-----------------------------------------------------------------------

Summary of changes:
 crawl-ref/source/spl-tornado.cc |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/crawl-ref/source/spl-tornado.cc b/crawl-ref/source/spl-tornado.cc
index 86b1cd6..f41e122 100644
--- a/crawl-ref/source/spl-tornado.cc
+++ b/crawl-ref/source/spl-tornado.cc
@@ -2,6 +2,7 @@
 
 #include "spl-damage.h"
 
+#include "areas.h"
 #include "cloud.h"
 #include "coord.h"
 #include "coordit.h"
@@ -203,24 +204,28 @@ void tornado_damage(actor *caster, int dur)
                 if (victim->submerged())
                     continue;
 
+                bool leda = liquefied(victim->pos()) && victim->ground_level();
                 if (!victim->res_wind())
                 {
                     if (victim->atype() == ACT_MONSTER)
                     {
-                        // levitate the monster so you get only one attempt at
-                        // tossing them into water/lava
                         monster *mon = victim->as_monster();
-                        mon_enchant ench(ENCH_LEVITATION, 0,
-                                         caster->kill_alignment(), 20);
-                        if (mon->has_ench(ENCH_LEVITATION))
-                            mon->update_ench(ench);
-                        else
-                            mon->add_ench(ench);
+                        if (!leda)
+                        {
+                            // levitate the monster so you get only one attempt
+                            // at tossing them into water/lava
+                            mon_enchant ench(ENCH_LEVITATION, 0,
+                                             caster->kill_alignment(), 20);
+                            if (mon->has_ench(ENCH_LEVITATION))
+                                mon->update_ench(ench);
+                            else
+                                mon->add_ench(ench);
+                        }
                         behaviour_event(mon, ME_ANNOY, caster->mindex());
                         if (mons_is_mimic(mon->type))
                             mimic_alert(mon);
                     }
-                    else
+                    else if (!leda)
                     {
                         bool standing = !you.airborne();
                         if (standing)
@@ -242,7 +247,7 @@ void tornado_damage(actor *caster, int dur)
                         victim->hurt(caster, dmg);
                 }
 
-                if (victim->alive())
+                if (victim->alive() && !leda)
                     move_act.push(victim);
             }
             if ((env.cgrid(*dam_i) == EMPTY_CLOUD


-- 
Dungeon Crawl Stone Soup

------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Crawl-ref-discuss mailing list
Crawl-ref-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crawl-ref-discuss

Reply via email to