summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells2.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-22 20:21:15 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-22 20:21:15 +0000
commit9a160b380b94ce9b89c93214fe7b9de3f36ed01f (patch)
tree53d1992a132d6e3178b427bbaca2510120233173 /crawl-ref/source/spells2.cc
parent23e8c7a07f9ea71e683fa748940cc7447e5a8aa1 (diff)
downloadcrawl-ref-9a160b380b94ce9b89c93214fe7b9de3f36ed01f.tar.gz
crawl-ref-9a160b380b94ce9b89c93214fe7b9de3f36ed01f.zip
Massive change from using x and y to using coord_defs(). Not quite tested,
most likely broken in some places and might break tiles. Will fix in the near future. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6636 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/spells2.cc')
-rw-r--r--crawl-ref/source/spells2.cc55
1 files changed, 22 insertions, 33 deletions
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index 7993961ffb..47101e47e0 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -242,8 +242,7 @@ int detect_creatures( int pow, bool telepathic )
if (mons_intel( mon->type ) == I_HIGH
&& mons_class_flag( mon->type, M_SPELLCASTER ))
{
- behaviour_event( mon, ME_DISTURB, MHITYOU,
- you.x_pos, you.y_pos );
+ behaviour_event( mon, ME_DISTURB, MHITYOU, you.pos() );
}
}
}
@@ -282,35 +281,29 @@ int corpse_rot(int power)
for (adx = minx; adx != maxx; adx += xinc)
for (ady = miny; ady != maxy; ady += yinc)
{
- if (see_grid_no_trans(adx, ady) && !is_sanctuary(adx, ady))
+ coord_def ad(adx, ady);
+ if (see_grid_no_trans(ad) && !is_sanctuary(ad))
{
- if (igrd[adx][ady] == NON_ITEM
- || env.cgrid[adx][ady] != EMPTY_CLOUD)
- {
+ if (igrd(ad) == NON_ITEM || env.cgrid(ad) != EMPTY_CLOUD)
continue;
- }
- int objl = igrd[adx][ady];
- int hrg = 0;
-
- while (objl != NON_ITEM)
+ for ( stack_iterator si(ad); si; ++si )
{
- if (mitm[objl].base_type == OBJ_CORPSES
- && mitm[objl].sub_type == CORPSE_BODY)
+ if (si->base_type == OBJ_CORPSES
+ && si->sub_type == CORPSE_BODY)
{
- if (!mons_skeleton(mitm[objl].plus))
- destroy_item(objl);
+ // Found a corpse. Skeletify it if possible.
+ if (!mons_skeleton(si->plus))
+ destroy_item(si->index());
else
- turn_corpse_into_skeleton(mitm[objl]);
+ turn_corpse_into_skeleton(*si);
- place_cloud(CLOUD_MIASMA, adx, ady,
+ place_cloud(CLOUD_MIASMA, ad,
4 + random2avg(16, 3), KC_YOU);
// Don't look for more corpses here.
break;
}
- hrg = mitm[objl].link;
- objl = hrg;
}
}
}
@@ -416,7 +409,7 @@ bool brand_weapon(brand_type which_brand, int power)
// Well, in theory, we could be silenced, but then how are
// we casting the brand spell?
msg += " shrieks in agony.";
- noisy(15, you.x_pos, you.y_pos);
+ noisy(15, you.pos());
duration_affected = 8;
break;
@@ -801,7 +794,7 @@ void drain_life(int pow)
hurted = 3 + random2(7) + random2(pow);
- behaviour_event(monster, ME_WHACK, MHITYOU, you.x_pos, you.y_pos);
+ behaviour_event(monster, ME_WHACK, MHITYOU, you.pos());
hurt_monster(monster, hurted);
@@ -1838,34 +1831,30 @@ bool cast_conjure_ball_lightning(int pow, god_type god)
for (int i = 0; i < how_many; ++i)
{
- int tx = -1, ty = -1;
-
+ coord_def target;
+ bool found = false;
for (int j = 0; j < 10; ++j)
{
- if (!random_near_space(you.x_pos, you.y_pos, tx, ty, true, true)
- && distance(you.x_pos, you.y_pos, tx, ty) <= 5)
+ if (!random_near_space(you.pos(), target, true, true)
+ && distance(you.pos(), target) <= 5)
{
+ found = true;
break;
}
}
// If we fail, we'll try the ol' summon next to player trick.
- if (tx == -1 || ty == -1)
- {
- tx = you.x_pos;
- ty = you.y_pos;
- }
+ if ( !found )
+ target = you.pos();
int monster =
mons_place(
mgen_data(MONS_BALL_LIGHTNING, BEH_FRIENDLY, 0,
- coord_def(tx, ty), MHITNOT,
- 0, god));
+ target, MHITNOT, 0, god));
if (monster != -1)
{
success = true;
-
menv[monster].add_ench(ENCH_SHORT_LIVED);
}
}