From 82a59c624277434f08455446f635b8875c891a9b Mon Sep 17 00:00:00 2001 From: Neil Moore Date: Thu, 7 Aug 2014 19:01:07 -0400 Subject: 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). --- crawl-ref/source/attack.cc | 20 +++++++++---------- crawl-ref/source/attack.h | 2 +- crawl-ref/source/melee_attack.cc | 42 +++++++++++++++++++-------------------- crawl-ref/source/ranged_attack.cc | 11 ++++------ 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" : "", -- cgit v1.2.3-54-g00ecf