summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-03 00:28:09 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-03 00:28:09 +0000
commit8e5c98fdea2404a741f67eca776616ba32fe04cc (patch)
treef4eefd958fd093ef26843981be8d32f835f1ddb3 /crawl-ref/source
parent229273780df2b6cd56ba0675538a9ae4307f9804 (diff)
downloadcrawl-ref-8e5c98fdea2404a741f67eca776616ba32fe04cc.tar.gz
crawl-ref-8e5c98fdea2404a741f67eca776616ba32fe04cc.zip
When drawing a damaging card, set the beam range to LOS_RADIUS.
Remove unused function hurt_monster(). In monsters::hurt() if, after hurting the monster, hit_points > max_hit_points, then hurt the monster some more until hit_points == max_hit_points. Use monsers::hurt() instead of directly descreasing the hit_points member. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8145 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/decks.cc15
-rw-r--r--crawl-ref/source/fight.cc8
-rw-r--r--crawl-ref/source/mon-util.cc14
-rw-r--r--crawl-ref/source/monstuff.cc5
-rw-r--r--crawl-ref/source/monstuff.h2
5 files changed, 18 insertions, 26 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 080c029e77..5527be10ec 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -1731,16 +1731,7 @@ static int _drain_monsters(coord_def where, int pow, int garbage)
}
mon.max_hit_points -= 2 + random2(pow/50);
- mon.hit_points -= 2 + random2(50);
-
- if (mon.hit_points >= mon.max_hit_points)
- mon.hit_points = mon.max_hit_points;
-
- if (mon.hit_dice < 1)
- mon.hit_points = 0;
-
- if (mon.hit_points <= 0)
- monster_die(&mon, KILL_YOU, NON_MONSTER);
+ mon.hurt(&you, 2 + random2(50), BEAM_NEG);
}
}
return 1;
@@ -1759,7 +1750,6 @@ static bool _damaging_card(card_type card, int power, deck_rarity_type rarity)
const int power_level = get_power_level(power, rarity);
dist target;
- bolt beam;
zap_type ztype = ZAP_DEBUGGING_RAY;
const zap_type firezaps[3] = { ZAP_FLAME, ZAP_STICKY_FLAME, ZAP_FIRE };
const zap_type frostzaps[3] = { ZAP_FROST, ZAP_ICE_BOLT, ZAP_COLD };
@@ -1815,6 +1805,9 @@ static bool _damaging_card(card_type card, int power, deck_rarity_type rarity)
snprintf(info, INFO_SIZE, "You have drawn %s. Aim where? ",
card_name(card));
+
+ bolt beam;
+ beam.range = LOS_RADIUS;
if (spell_direction(target, beam, DIR_NONE, TARG_ENEMY,
LOS_RADIUS, true, true, false, info)
&& player_tracer(ZAP_DEBUGGING_RAY, power/4, beam))
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index eda351c88a..bff9578af4 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -2068,13 +2068,7 @@ void melee_attack::drain_monster()
}
def->max_hit_points -= 2 + random2(3);
- def->hit_points -= 2 + random2(3);
-
- if (def->hit_points >= def->max_hit_points)
- def->hit_points = def->max_hit_points;
-
- if (def->hit_dice < 1)
- def->hit_points = 0;
+ def->hurt(attacker, 2 + random2(3), BEAM_NEG, false);
special_damage = 1 + (random2(damage_done) / 2);
attacker->god_conduct(DID_NECROMANCY, 2);
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index afbdd7e52f..58f1d51887 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -5673,14 +5673,26 @@ god_type monsters::deity() const
int monsters::hurt(const actor *agent, int amount, beam_type flavour,
bool cleanup_dead)
{
+ // Already dead?
+ if (hit_points < 1 || type == -1)
+ return (0);
+
if (amount == INSTANT_DEATH)
amount = hit_points;
- else if (amount <= 0)
+ else if (hit_dice < 1)
+ amount = hit_points;
+ else if (amount <= 0 && hit_points <= max_hit_points)
return (0);
amount = std::min(amount, hit_points);
hit_points -= amount;
+ if (hit_points > max_hit_points)
+ {
+ amount += hit_points - max_hit_points;
+ hit_points = max_hit_points;
+ }
+
// Allow the victim to exhibit passive damage behaviour (royal jelly).
react_to_damage(amount, flavour);
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 08a81a3f74..950f346b16 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -8465,11 +8465,6 @@ unsigned int monster_index(const monsters *monster)
return (monster - menv.buffer());
}
-int hurt_monster(monsters * victim, int damage_dealt)
-{
- return (victim->hurt(NULL, damage_dealt));
-}
-
bool heal_monster(monsters * patient, int health_boost,
bool permit_growth)
{
diff --git a/crawl-ref/source/monstuff.h b/crawl-ref/source/monstuff.h
index 8916801a6e..f362d867b4 100644
--- a/crawl-ref/source/monstuff.h
+++ b/crawl-ref/source/monstuff.h
@@ -195,8 +195,6 @@ unsigned int monster_index(const monsters *monster);
void mons_get_damage_level(const monsters*, std::string& desc,
mon_dam_level_type&);
-int hurt_monster(monsters *victim, int damage_dealt);
-
bool heal_monster(monsters *patient, int health_boost, bool permit_growth);
void seen_monster(monsters *monster);