Monster description. More...
|void||plural_aux (char *name, size_t max)|
|Perform simple English pluralization on a monster name. |
|void||get_mon_name (char *output_name, size_t max, const monster_race *r_ptr, int num)|
|Helper function for display monlist. |
|void||monster_desc (char *desc, size_t max, const struct monster *mon, int mode)|
|Builds a string describing a monster in some way. |
Copyright (c) 1997-2007 Ben Harrison, James E. Wilson, Robert A. Koeneke
This work is free software; you can redistribute it and/or modify it under the terms of either:
a) the GNU General Public License as published by the Free Software Foundation, version 2, or
b) the "Angband licence": This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies. Other copyrights may also apply.
Helper function for display monlist.
Prints the number of creatures, followed by either a singular or plural version of the race name as appropriate.
Referenced by monster_list_format_section().
Builds a string describing a monster in some way.
We can correctly describe monsters based on their visibility. We can force all monsters to be treated as visible or invisible. We can build nominatives, objectives, possessives, or reflexives. We can selectively pronominalize hidden, visible, or all monsters. We can use definite or indefinite descriptions for hidden monsters. We can use definite or indefinite descriptions for visible monsters.
Pronominalization involves the gender whenever possible and allowed, so that by cleverly requesting pronominalization / visibility, you can get messages like "You hit someone. She screams in agony!".
Reflexives are acquired by requesting Objective plus Possessive.
I am assuming that no monster name is more than 65 characters long, so that "char desc;" is sufficiently large for any result, even when the "offscreen" notation is added.
Note that the "possessive" for certain unique monsters will look really silly, as in "Morgoth, King of Darkness's". We should perhaps add a flag to "remove" any "descriptives" in the name.
Note that "offscreen" monsters will get a special "(offscreen)" notation in their name if they are visible but offscreen. This may look silly with possessives, as in "the rat's (offscreen)". Perhaps the "offscreen" descriptor should be abbreviated.
Mode Flags: 0x01 –> Objective (or Reflexive) 0x02 –> Possessive (or Reflexive) 0x04 –> Use indefinites for hidden monsters ("something") 0x08 –> Use indefinites for visible monsters ("a kobold") 0x10 –> Pronominalize hidden monsters 0x20 –> Pronominalize visible monsters 0x40 –> Assume the monster is hidden 0x80 –> Assume the monster is visible 0x100 –> Capitalise monster name
Useful Modes: 0x00 –> Full nominative name ("the kobold") or "it" 0x04 –> Full nominative name ("the kobold") or "something" 0x80 –> Banishment resistance name ("the kobold") 0x88 –> Killing name ("a kobold") 0x22 –> Possessive, genderized if visable ("his") or "its" 0x23 –> Reflexive, genderized if visable ("himself") or "itself"
References monster_race::flags, monster::fx, monster::fy, is_a_vowel(), MDESC_CAPITAL, MDESC_HIDE, MDESC_IND_VIS, MDESC_OBJE, MDESC_POSS, MDESC_PRO_HID, MDESC_PRO_VIS, MDESC_SHOW, monster::mflag, mflag_has, my_strcap(), my_strcat(), my_strcpy(), monster_race::name, panel_contains(), monster::race, and rf_has.
Referenced by context_menu_cave(), do_cmd_walk_test(), do_mon_spell(), effect_handler_DAMAGE(), effect_handler_DRAIN_MANA(), effect_handler_EARTHQUAKE(), effect_handler_MON_HEAL_HP(), effect_handler_PROBE(), make_attack_normal(), make_attack_spell(), message_pain(), mon_set_timed(), mon_take_hit(), process_monster(), process_monster_try_push(), project_m(), project_p(), py_attack(), py_attack_real(), ranged_helper(), target_set_closest(), and target_set_interactive_aux().