From 51e7b97746b7499413dfa867193a6db9c6eee933 Mon Sep 17 00:00:00 2001 From: haranp Date: Mon, 6 Nov 2006 22:14:18 +0000 Subject: More intelligent messages when monsters hit themselves (1578169.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup@348 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/fight.cc | 67 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 8c4c4cbabc..76ceafd748 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -3190,7 +3190,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " misses "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, + mons_pronoun(attacker->type, PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3202,8 +3206,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " hits "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); - + if ( attacker == defender ) + strcat(info, + mons_pronoun(attacker->type, PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); #if DEBUG_DIAGNOSTICS strcat(info, " for "); // note: doesn't take account of special weapons etc @@ -3223,7 +3230,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " hits "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, + mons_pronoun(attacker->type, PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); if (attacker->type != MONS_DANCING_WEAPON && attacker->inv[hand_used] != NON_ITEM @@ -3261,7 +3272,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " stings "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3278,7 +3293,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " stings "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3331,7 +3350,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " stings "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3408,7 +3431,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " freezes "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3437,7 +3464,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " freezes "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3454,7 +3485,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " shocks "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); strcat(info, "."); mpr(info); } @@ -3518,7 +3553,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) { strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " burns "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE )); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE )); if (specdam < 3) strcat(info, "."); @@ -3546,7 +3585,11 @@ bool monsters_fight(int monster_attacking, int monster_attacked) strcpy(info, ptr_monam(attacker, DESC_CAP_THE)); strcat(info, " freezes "); - strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); + if (attacker == defender) + strcat(info, mons_pronoun(attacker->type, + PRONOUN_REFLEXIVE)); + else + strcat(info, ptr_monam(defender, DESC_NOCAP_THE)); if (specdam < 3) strcat(info, "."); -- cgit v1.2.3-54-g00ecf