diff options
author | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-03 00:28:09 +0000 |
---|---|---|
committer | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-03 00:28:09 +0000 |
commit | 8e5c98fdea2404a741f67eca776616ba32fe04cc (patch) | |
tree | f4eefd958fd093ef26843981be8d32f835f1ddb3 /crawl-ref/source | |
parent | 229273780df2b6cd56ba0675538a9ae4307f9804 (diff) | |
download | crawl-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.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.h | 2 |
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); |