From 37dddc69c063b655d028bdb33e5ab831b4af8a55 Mon Sep 17 00:00:00 2001 From: Vsevolod Kozlov Date: Fri, 6 Nov 2009 11:48:29 +0300 Subject: Add actor::petrified, which replaces mons_is_petrified. Signed-off-by: Robert Vollmert --- crawl-ref/source/abl-show.cc | 2 +- crawl-ref/source/acr.cc | 6 +++--- crawl-ref/source/actor.h | 1 + crawl-ref/source/beam.cc | 8 ++++---- crawl-ref/source/fight.cc | 4 ++-- crawl-ref/source/mon-act.cc | 2 +- crawl-ref/source/mon-info.cc | 2 +- crawl-ref/source/mon-util.cc | 7 +------ crawl-ref/source/mon-util.h | 1 - crawl-ref/source/monster.cc | 7 ++++++- crawl-ref/source/monster.h | 1 + crawl-ref/source/output.cc | 2 +- crawl-ref/source/player.cc | 7 ++++++- crawl-ref/source/player.h | 1 + crawl-ref/source/spells1.cc | 2 +- crawl-ref/source/spells4.cc | 4 ++-- 16 files changed, 32 insertions(+), 25 deletions(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc index 218bd0d648..867fa8b626 100644 --- a/crawl-ref/source/abl-show.cc +++ b/crawl-ref/source/abl-show.cc @@ -1021,7 +1021,7 @@ static bool _check_ability_possible(const ability_def& abil, case ABIL_ELYVILON_PURIFICATION: if (!you.disease && !you.rotting && !you.duration[DUR_POISONING] && !you.duration[DUR_CONF] && !you.duration[DUR_SLOW] - && !you.duration[DUR_PARALYSIS] && !you.duration[DUR_PETRIFIED]) + && !you.duration[DUR_PARALYSIS] && !you.petrified()) { mpr("Nothing ails you!"); return (false); diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 4a020a2183..290a3bf5aa 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -2348,12 +2348,12 @@ static void _decrement_durations() _decrement_a_duration(DUR_SLIMIFY, "You feel less slimy.", coinflip(), "Your slime is starting to congeal."); - if (you.duration[DUR_PARALYSIS] || you.duration[DUR_PETRIFIED]) + if (you.duration[DUR_PARALYSIS] || you.petrified()) { _decrement_a_duration(DUR_PARALYSIS); _decrement_a_duration(DUR_PETRIFIED); - if (!you.duration[DUR_PARALYSIS] && !you.duration[DUR_PETRIFIED]) + if (!you.duration[DUR_PARALYSIS] && !you.petrified()) { mpr("You can move again.", MSGCH_DURATION); you.redraw_evasion = true; @@ -2426,7 +2426,7 @@ static void _decrement_durations() } } - if (!you.duration[DUR_PARALYSIS] && !you.duration[DUR_PETRIFIED]) + if (!you.duration[DUR_PARALYSIS] && !you.petrified()) mpr("You are exhausted.", MSGCH_WARN); // This resets from an actual penalty or from NO_BERSERK_PENALTY. diff --git a/crawl-ref/source/actor.h b/crawl-ref/source/actor.h index cced93cb0c..13bc372f4b 100644 --- a/crawl-ref/source/actor.h +++ b/crawl-ref/source/actor.h @@ -196,6 +196,7 @@ public: virtual bool asleep() const { return (false); } virtual bool backlit(bool check_haloed = true) const = 0; virtual bool haloed() const = 0; + virtual bool petrified() const = 0; virtual bool handle_trap(); diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 48a28d0076..af014304af 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2665,9 +2665,9 @@ bool mass_enchantment( enchant_type wh_enchant, int pow, int origin, void bolt::apply_bolt_paralysis(monsters *monster) { - if (!monster->has_ench(ENCH_PARALYSIS) + if (!monster->paralysed() && monster->add_ench(ENCH_PARALYSIS) - && (!monster->has_ench(ENCH_PETRIFIED) + && (!monster->petrified() || monster->has_ench(ENCH_PETRIFYING))) { if (simple_monster_message(monster, " suddenly stops moving!")) @@ -2685,7 +2685,7 @@ void bolt::apply_bolt_paralysis(monsters *monster) void bolt::apply_bolt_petrify(monsters *monster) { int petrifying = monster->has_ench(ENCH_PETRIFYING); - if (monster->has_ench(ENCH_PETRIFIED)) + if (monster->petrified()) { // If the petrifying is not yet finished, we can force it to happen // right away by casting again. Otherwise, the spell has no further @@ -5192,7 +5192,7 @@ mon_resist_type bolt::apply_enchantment_to_monster(monsters* mon) && !mons_is_stationary(mon) && mon->add_ench(ENCH_HASTE)) { - if (!mon->paralysed() && !mons_is_petrified(mon) + if (!mon->paralysed() && !mon->petrified() && simple_monster_message(mon, " seems to speed up.")) { obvious_effect = true; diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 003b546b59..c1b4217e97 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -321,7 +321,7 @@ unchivalric_attack_type is_unchivalric_attack(const actor *attacker, unchivalric = UCAT_PETRIFYING; // petrified - if (def && mons_is_petrified(def)) + if (defender->petrified()) unchivalric = UCAT_PETRIFIED; // paralysed @@ -1685,7 +1685,7 @@ int melee_attack::player_apply_monster_ac(int damage) damage -= random2(1 + defender->armour_class()); } - if (mons_is_petrified(defender_as_monster())) + if (defender->petrified()) damage /= 3; return (damage); diff --git a/crawl-ref/source/mon-act.cc b/crawl-ref/source/mon-act.cc index ebd07d6fcf..12dd4bb1ad 100644 --- a/crawl-ref/source/mon-act.cc +++ b/crawl-ref/source/mon-act.cc @@ -1855,7 +1855,7 @@ static void _handle_monster_move(monsters *monster) // Struggling against the net takes time. _swim_or_move_energy(monster); } - else if (!mons_is_petrified(monster)) + else if (!monster->petrified()) { // Calculates mmov based on monster target. _handle_movement(monster); diff --git a/crawl-ref/source/mon-info.cc b/crawl-ref/source/mon-info.cc index 767f49c4a8..92673a586b 100644 --- a/crawl-ref/source/mon-info.cc +++ b/crawl-ref/source/mon-info.cc @@ -154,7 +154,7 @@ static std::string _verbose_info(const monsters* m) if (mons_behaviour_perceptible(m)) { - if (mons_is_petrified(m)) + if (m->petrified()) return (" (petrified)"); if (m->paralysed()) return (" (paralysed)"); diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index b1e54bbfc3..4dc815106d 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -2035,11 +2035,6 @@ mon_attitude_type mons_attitude(const monsters *m) return ATT_HOSTILE; } -bool mons_is_petrified(const monsters *m) -{ - return (m->has_ench(ENCH_PETRIFIED)); -} - bool mons_is_petrifying(const monsters *m) { return (m->has_ench(ENCH_PETRIFYING)); @@ -2048,7 +2043,7 @@ bool mons_is_petrifying(const monsters *m) bool mons_cannot_act(const monsters *m) { return (m->paralysed() - || mons_is_petrified(m) && !mons_is_petrifying(m)); + || m->petrified() && !mons_is_petrifying(m)); } bool mons_cannot_move(const monsters *m) diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index e8a35999df..60c7a5d1e7 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -675,7 +675,6 @@ bool invalid_monster_type(monster_type mt); bool invalid_monster_index(int i); bool monster_shover(const monsters *m); -bool mons_is_petrified(const monsters *m); bool mons_is_petrifying(const monsters *m); bool mons_cannot_act(const monsters *m); bool mons_cannot_move(const monsters *m); diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index a29c36b3be..7c8e1cc0a9 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -2803,6 +2803,11 @@ bool monsters::caught() const return this->has_ench(ENCH_HELD); } +bool monsters::petrified() const +{ + return has_ench(ENCH_PETRIFIED); +} + int monsters::shield_bonus() const { const item_def *shld = const_cast(this)->shield(); @@ -4096,7 +4101,7 @@ void monsters::remove_enchantment_effect(const mon_enchant &me, bool quiet) break; case ENCH_PETRIFYING: - if (!has_ench(ENCH_PETRIFIED)) + if (!petrified()) break; if (!quiet) diff --git a/crawl-ref/source/monster.h b/crawl-ref/source/monster.h index 1eb019347a..d19af87d5f 100644 --- a/crawl-ref/source/monster.h +++ b/crawl-ref/source/monster.h @@ -331,6 +331,7 @@ public: bool asleep() const; bool backlit(bool check_haloed = true) const; bool haloed() const; + bool petrified() const; bool has_spells() const; bool has_spell(spell_type spell) const; diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index fcc94f0cd7..1ed3cf10a5 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -2041,7 +2041,7 @@ std::string _status_mut_abilities() if (you.paralysed()) status.push_back("paralysed"); - if (you.duration[DUR_PETRIFIED]) + if (you.petrified()) status.push_back("petrified"); if (you.duration[DUR_SLEEP]) diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 591a6d68fa..0c7fe03b39 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -6274,7 +6274,7 @@ bool player::paralysed() const bool player::cannot_move() const { - return (duration[DUR_PARALYSIS] || duration[DUR_PETRIFIED]); + return (paralysed() || petrified()); } bool player::confused() const @@ -6287,6 +6287,11 @@ bool player::caught() const return (attribute[ATTR_HELD]); } +bool player::petrified() const +{ + return (duration[DUR_PETRIFIED]); +} + int player::shield_block_penalty() const { return (5 * shield_blocks * shield_blocks); diff --git a/crawl-ref/source/player.h b/crawl-ref/source/player.h index a2c4acb21b..147572a053 100644 --- a/crawl-ref/source/player.h +++ b/crawl-ref/source/player.h @@ -455,6 +455,7 @@ public: bool caught() const; bool backlit(bool check_haloed = true) const; bool haloed() const; + bool petrified() const; bool asleep() const; void put_to_sleep(int power = 0); diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc index e94fc43957..e4f451dc6b 100644 --- a/crawl-ref/source/spells1.cc +++ b/crawl-ref/source/spells1.cc @@ -960,7 +960,7 @@ bool cast_vitalisation() // Remove negative afflictions. if (you.disease || you.rotting || you.confused() || you.duration[DUR_PARALYSIS] || you.duration[DUR_POISONING] - || you.duration[DUR_PETRIFIED]) + || you.petrified()) { do { diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc index bf965913da..3502c0db09 100644 --- a/crawl-ref/source/spells4.cc +++ b/crawl-ref/source/spells4.cc @@ -1531,7 +1531,7 @@ bool cast_fragmentation(int pow, const dist& spd) else { const bool petrifying = mons_is_petrifying(mon); - const bool petrified = mons_is_petrified(mon) && !petrifying; + const bool petrified = mon->petrified() && !petrifying; // Petrifying or petrified monsters can be exploded. if (petrifying || petrified) @@ -2100,7 +2100,7 @@ bool do_slow_monster(monsters* mon, kill_category whose_kill) && !mons_is_stationary(mon) && mon->add_ench(mon_enchant(ENCH_SLOW, 0, whose_kill))) { - if (!mon->paralysed() && !mons_is_petrified(mon) + if (!mon->paralysed() && !mon->petrified() && simple_monster_message(mon, " seems to slow down.")) { return (true); -- cgit v1.2.3-54-g00ecf