From 2783491ec3f7c58c6d9872f8cafd74511091a198 Mon Sep 17 00:00:00 2001 From: dshaligram Date: Thu, 9 Aug 2007 10:29:26 +0000 Subject: Fixed incorrect use of It vs Something in attack messages. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1981 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/fight.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'crawl-ref/source/fight.cc') diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 64bcaa10e9..41ffd6ba92 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -288,6 +288,7 @@ melee_attack::melee_attack(actor *attk, actor *defn, cancel_attack(false), did_hit(false), perceived_attack(false), needs_message(false), attacker_visible(false), defender_visible(false), + attacker_invisible(false), defender_invisible(false), unarmed_ok(allow_unarmed), attack_number(which_attack), to_hit(0), base_damage(0), potential_damage(0), damage_done(0), @@ -345,7 +346,10 @@ void melee_attack::init_attack() water_attack = is_water_attack(attacker, defender); attacker_visible = attacker->visible(); + attacker_invisible = !attacker_visible && see_grid(attacker->pos()); defender_visible = defender && defender->visible(); + defender_invisible = !defender_visible && defender + && see_grid(defender->pos()); needs_message = attacker_visible || defender_visible; if (defender && defender->submerged()) @@ -354,9 +358,10 @@ void melee_attack::init_attack() std::string melee_attack::actor_name(const actor *a, description_level_type desc, - bool actor_visible) + bool actor_visible, + bool actor_invisible) { - return (actor_visible? a->name(desc) : anon_name(desc)); + return (actor_visible? a->name(desc) : anon_name(desc, actor_invisible)); } std::string melee_attack::pronoun(const actor *a, @@ -379,13 +384,14 @@ std::string melee_attack::anon_pronoun(pronoun_type pron) } } -std::string melee_attack::anon_name(description_level_type desc) +std::string melee_attack::anon_name(description_level_type desc, + bool actor_invisible) { switch (desc) { case DESC_CAP_THE: case DESC_CAP_A: - return ("Something"); + return (actor_invisible? "It" : "Something"); case DESC_CAP_YOUR: return ("Its"); case DESC_NOCAP_YOUR: @@ -395,18 +401,18 @@ std::string melee_attack::anon_name(description_level_type desc) case DESC_NOCAP_A: case DESC_PLAIN: default: - return ("something"); + return (actor_invisible? "it" : "something"); } } std::string melee_attack::atk_name(description_level_type desc) const { - return actor_name(attacker, desc, attacker_visible); + return actor_name(attacker, desc, attacker_visible, attacker_invisible); } std::string melee_attack::def_name(description_level_type desc) const { - return actor_name(defender, desc, defender_visible); + return actor_name(defender, desc, defender_visible, defender_invisible); } bool melee_attack::is_water_attack(const actor *attk, -- cgit v1.2.3-54-g00ecf