summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Moore <neil@s-z.org>2014-08-07 19:01:07 -0400
committerNeil Moore <neil@s-z.org>2014-08-07 19:11:12 -0400
commit82a59c624277434f08455446f635b8875c891a9b (patch)
tree1770b40096fce84c621a91381d3b881403424932
parent2a679c6e77b2e24b41d3adb469d4835b6501c8fd (diff)
downloadcrawl-ref-82a59c624277434f08455446f635b8875c891a9b.tar.gz
crawl-ref-82a59c624277434f08455446f635b8875c891a9b.zip
Tweak defender_name method and use it more.
Have it take a parameter indicating whether reflexive is allowed, and replace existing calls to defender_name() and def_name(DESC_THE).
-rw-r--r--crawl-ref/source/attack.cc20
-rw-r--r--crawl-ref/source/attack.h2
-rw-r--r--crawl-ref/source/melee_attack.cc42
-rw-r--r--crawl-ref/source/ranged_attack.cc11
4 files changed, 36 insertions, 39 deletions
diff --git a/crawl-ref/source/attack.cc b/crawl-ref/source/attack.cc
index 6567742ab9..b041dc18fb 100644
--- a/crawl-ref/source/attack.cc
+++ b/crawl-ref/source/attack.cc
@@ -497,7 +497,7 @@ bool attack::distortion_affects_defender()
{
special_damage_message =
make_stringf("%s %s in the distortional energy.",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("bask").c_str());
}
@@ -510,7 +510,7 @@ bool attack::distortion_affects_defender()
{
special_damage_message =
make_stringf("Space bends around %s.",
- def_name(DESC_THE).c_str());
+ defender_name(false).c_str());
special_damage += 1 + random2avg(7, 2);
return false;
}
@@ -519,7 +519,7 @@ bool attack::distortion_affects_defender()
{
special_damage_message =
make_stringf("Space warps horribly around %s!",
- def_name(DESC_THE).c_str());
+ defender_name(false).c_str());
special_damage += 3 + random2avg(24, 2);
return false;
}
@@ -737,7 +737,7 @@ void attack::chaos_affects_defender()
{
special_damage_message =
make_stringf("%s is duplicated!",
- def_name(DESC_THE).c_str());
+ defender_name(false).c_str());
}
// The player shouldn't get new permanent followers from cloning.
@@ -1080,7 +1080,7 @@ void attack::drain_defender()
"%s %s %s!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("drain").c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
}
attacker->god_conduct(DID_NECROMANCY, 2);
@@ -1258,9 +1258,9 @@ string attack::wep_name(description_level_type desc, iflags_t ignre_flags)
* below, in calc_elemental_brand_damage, which is called for both frost and
* flame brands for both players and monsters.
*/
-string attack::defender_name()
+string attack::defender_name(bool allow_reflexive)
{
- if (attacker == defender)
+ if (allow_reflexive && attacker == defender)
return actor_pronoun(attacker, PRONOUN_REFLEXIVE, attacker_visible);
else
return def_name(DESC_THE);
@@ -1602,7 +1602,7 @@ bool attack::attack_shield_blocked(bool verbose)
if (needs_message && verbose)
{
mprf("%s %s %s attack.",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("block").c_str(),
attacker == defender ? "its own"
: atk_name(DESC_ITS).c_str());
@@ -1685,7 +1685,7 @@ bool attack::apply_damage_brand(const char *what)
special_damage_message =
make_stringf(
"%s %s%s",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("convulse").c_str(),
attack_strength_punctuation(special_damage).c_str());
}
@@ -1931,7 +1931,7 @@ void attack::calc_elemental_brand_damage(beam_type flavour,
what ? pluralise(verb).c_str() // XXX: may need to change this
: attacker->conj_verb(verb).c_str(),
// Don't allow reflexive if the subject wasn't the attacker.
- (what ? def_name(DESC_THE) : defender_name()).c_str(),
+ defender_name(!what).c_str(),
attack_strength_punctuation(special_damage).c_str());
}
}
diff --git a/crawl-ref/source/attack.h b/crawl-ref/source/attack.h
index e4c325e616..f688326dee 100644
--- a/crawl-ref/source/attack.h
+++ b/crawl-ref/source/attack.h
@@ -192,7 +192,7 @@ protected:
// TODO: Definitely want to get rid of this, which we can't really do
// until we refactor the whole pronoun / desc usage from these lowly
// classes all the way up to monster/player (and actor) classes.
- string defender_name();
+ string defender_name(bool allow_reflexive);
attack_flavour random_chaos_attack_flavour();
diff --git a/crawl-ref/source/melee_attack.cc b/crawl-ref/source/melee_attack.cc
index 5b7ebb788c..22e1aa2945 100644
--- a/crawl-ref/source/melee_attack.cc
+++ b/crawl-ref/source/melee_attack.cc
@@ -363,7 +363,7 @@ bool melee_attack::handle_phase_dodged()
mprf("%s%s misses %s%s",
atk_name(DESC_THE).c_str(),
evasion_margin_adverb().c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
attack_strength_punctuation(damage_done).c_str());
}
}
@@ -1947,7 +1947,7 @@ void melee_attack::rot_defender(int amount, int immediate)
special_damage_message =
make_stringf(
"%s %s!",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
amount > 0 ? "rots" : "looks less resilient");
}
}
@@ -2146,7 +2146,7 @@ bool melee_attack::chop_hydra_head(int dam,
mprf("%s %s %s last head off!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb(verb).c_str(),
- apostrophise(defender_name()).c_str());
+ apostrophise(defender_name(true)).c_str());
}
defender->as_monster()->number--;
@@ -2167,7 +2167,7 @@ bool melee_attack::chop_hydra_head(int dam,
mprf("%s %s one of %s heads off!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb(verb).c_str(),
- apostrophise(defender_name()).c_str());
+ apostrophise(defender_name(true)).c_str());
}
defender->as_monster()->number--;
@@ -2524,7 +2524,7 @@ bool melee_attack::attack_warded_off()
{
mprf("%s tries to attack %s, but flinches away.",
atk_name(DESC_THE).c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
}
return true;
}
@@ -2654,7 +2654,7 @@ void melee_attack::announce_hit()
mprf("%s %s %s%s%s%s",
atk_name(DESC_THE).c_str(),
attacker->conj_verb(mons_attack_verb()).c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
debug_damage_number().c_str(),
mons_attack_desc().c_str(),
attack_strength_punctuation(damage_done).c_str());
@@ -2710,11 +2710,11 @@ bool melee_attack::mons_do_poison()
{
mprf("%s poisons %s!",
atk_name(DESC_THE).c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
if (force)
{
mprf("%s partially resist%s.",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->is_player() ? "" : "s");
}
}
@@ -2732,7 +2732,7 @@ void melee_attack::mons_do_napalm()
if (needs_message)
{
mprf("%s %s covered in liquid flames%s",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("are").c_str(),
attack_strength_punctuation(special_damage).c_str());
}
@@ -2952,7 +2952,7 @@ void melee_attack::mons_apply_attack_flavour()
if (needs_message && base_damage)
{
mprf("%s %s engulfed in flames%s",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("are").c_str(),
attack_strength_punctuation(special_damage).c_str());
@@ -2977,7 +2977,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s%s",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("freeze").c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
attack_strength_punctuation(special_damage).c_str());
_print_resist_messages(defender, base_damage, BEAM_COLD);
@@ -3002,7 +3002,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s%s",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("shock").c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
attack_strength_punctuation(special_damage).c_str());
_print_resist_messages(defender, base_damage, BEAM_ELECTRICITY);
@@ -3153,7 +3153,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("infuriate").c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
}
defender->go_berserk(false);
@@ -3184,7 +3184,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s%s",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("sear").c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
attack_strength_punctuation(special_damage).c_str());
}
@@ -3239,7 +3239,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s.",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("grab").c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
}
attacker->start_constricting(*defender);
// if you got grabbed, interrupt stair climb and passwall
@@ -3270,7 +3270,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s in water!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("engulf").c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
}
}
@@ -3294,7 +3294,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s!",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("burn").c_str(),
- defender_name().c_str());
+ defender_name(true).c_str());
_print_resist_messages(defender, special_damage, BEAM_FIRE);
}
@@ -3369,7 +3369,7 @@ void melee_attack::mons_apply_attack_flavour()
mprf("%s %s %s%s",
atk_name(DESC_THE).c_str(),
attacker->conj_verb("drown").c_str(),
- defender_name().c_str(),
+ defender_name(true).c_str(),
attack_strength_punctuation(special_damage).c_str());
}
}
@@ -3390,7 +3390,7 @@ void melee_attack::mons_apply_attack_flavour()
if (needs_message)
{
mprf("The air around %s erupts in flames!",
- def_name(DESC_THE).c_str());
+ defender_name(false).c_str());
for (adjacent_iterator ai(defender->pos()); ai; ++ai)
{
@@ -3778,7 +3778,7 @@ bool melee_attack::do_knockback(bool trample)
if (needs_message)
{
mprf("%s %s backwards!",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("stumble").c_str());
}
@@ -3803,7 +3803,7 @@ bool melee_attack::do_knockback(bool trample)
if (needs_message)
{
mprf("%s %s %s ground!",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb("hold").c_str(),
defender->pronoun(PRONOUN_POSSESSIVE).c_str());
}
diff --git a/crawl-ref/source/ranged_attack.cc b/crawl-ref/source/ranged_attack.cc
index d08bfdb751..43a0bce594 100644
--- a/crawl-ref/source/ranged_attack.cc
+++ b/crawl-ref/source/ranged_attack.cc
@@ -194,7 +194,7 @@ bool ranged_attack::handle_phase_blocked()
if (needs_message)
{
mprf("%s %s %s%s",
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
defender->conj_verb(verb).c_str(),
projectile->name(DESC_THE).c_str(),
punctuation.c_str());
@@ -256,8 +256,7 @@ bool ranged_attack::handle_phase_dodged()
mprf("%s%s misses %s%s",
projectile->name(DESC_THE).c_str(),
evasion_margin_adverb().c_str(),
- // Not defender_name because reflexive is bad here.
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
attack_strength_punctuation(damage_done).c_str());
}
@@ -406,8 +405,7 @@ bool ranged_attack::attack_ignores_shield(bool verbose)
{
mprf("%s pierces through %s %s!",
projectile->name(DESC_THE).c_str(),
- // Not defender_name because reflexive is bad here.
- apostrophise(def_name(DESC_THE)).c_str(),
+ apostrophise(defender_name(false)).c_str(),
defender_shield ? defender_shield->name(DESC_PLAIN).c_str()
: "shielding");
}
@@ -875,8 +873,7 @@ void ranged_attack::announce_hit()
mprf("%s %s %s%s%s%s",
projectile->name(DESC_THE).c_str(),
attack_verb.c_str(),
- // Not defender_name because reflexive is bad here.
- def_name(DESC_THE).c_str(),
+ defender_name(false).c_str(),
damage_done > 0 && stab_attempt && stab_bonus > 0
? " in a vulnerable spot"
: "",