documentation and index/offset fix.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2135 c06c8d41-db1a-0410-9941-cceddc491573
FYD4A5TIETIV2ZLFYWGHXANU6WQFKMVREHM7OZY2TAXSBMMCDLJAC AIIVH43Z5X3GTPFY4FXQRZPG6Y7QPH2KJ47VM2Q43PCGGD5MTMOAC OVM7ZULJJ6Q23AQ747AWBGISGDQYCGF2NT5YTXKW633I56WIYZPQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC Y3ZCJ2CZJYJAEB76HS4EY4GD64TDPPKANQVNDEH2OJPRDPZWJNYAC R5Q2OJMXNVK5RPXIKLTHHAOP67XOBB44AZKKZ2TOI3USPL6HACXAC As of Stone Soup 0.3 the previously hard-coded monsterspeech has been outsourced into shout.txt and speak.txt byMatthew Cline. This makes changing existing messages, oradding new ones really easy. This file will hopefully helpyou in this endeavour.
As of Dungeon Crawl Stone Soup 0.3 the previously hard-codedmonster speech has been outsourced by Matthew Cline intoshout.txt and speak.txt. This makes changing existingmessages, or adding new ones really easy. This file willhopefully help you in this endeavour.
capital letters), then a a group description (such asinsect or humanoid) defined by the monster's body shape.The latter is entirely hardcoded, though.
capital letters), then a group description (such as insector humanoid) defined by the monster's body shape (winged,tailed etc). The latter is entirely hardcoded, though.
string, then reading from left to right the combinationsare tested, beginning at three prefixes and ending atnone, at which time the prefix "default" is used instead.For the last round (shape comparison, e.g. winged humanoidetc.) a prefix on intelligence gets added. If in this lastround still nothing has been found, the monster stayssilent.
string, then, reading from left to right, combinations aretested, beginning at three prefixes and ending at none, atwhich time the prefix "default" is used instead.Only keys that match a searching string perfectly(ignoring upper/lower cases) will be found!For the last round (shape comparison, e.g. wingedhumanoid) occasionally an additional intelligence estimate("stupid", "smart") is prefixed to the search string. Ifin this last round still nothing has been found, themonster stays silent.
Other variables can be defined in the form of @variable@.The "@_friendly_imp_@" above is key to another entry inthe database entitled "_friendly_imp_" (without those '@'signs) that actually has imps talking. Their speechincludes messages such as the following.
More variables can be defined in the form of @variable@.The "@_friendly_imp_@" above is a reference to anotherentry in the database that has the key "_friendly_imp_"(without those '@' signs) that actually has imps talking.Their speech includes messages such as the following.
The message entries themselves can be longer than a line,though Crawl will simply truncate it should it exceed thescreen width (assuming 80 columns or less). The actualmessage length will usually differ from the one defining anentry as parameters can be stripped from the entry orreplaced by other values, as explained in the followingsection.
VISUAL ENCHANT : MSGCH_ENCHANT
Note, though, that these rarely will take effect asusually the "silenced humanoid" types will takeprecedence. In the case of silenced monsters, first thedatabase is searched for the monster key along withseveral prefixes including "silenced", and only if nomessage can be found through all iterations of monstername, glyph and group description, the search will repeatignoring the "silenced" prefix and only then these specialVISUAL cases can apply.
changed to MSGCH_TALK_VISUAL for monsters that don'tspeak, and manually set to MSGCH_SOUND for all thosevariants of "You hear a shout!"
automatically changed to MSGCH_TALK_VISUAL for monstersthat can't speak (animals, usually), and manually set toMSGCH_SOUND for all those variants of "You hear a shout!"
Like with @_friendly_imp_@ above, variables have beendefined to allow for greater flexibility. When the speechcode encounters an '@' sign it will first search thedatabase for a variable of that name and execute thenecessary replacement. Note that recursive replacement ofone variable with another is possible, so try to avoidloops. The remaining variables it was unable to find inthe database are hardcoded and will be replaced beforeoutput. If you add a new variable make sure to also add adatabase entry for it (without those '@' marks around!);otherwise it won't get replaced and just look weird.
Like with @_friendly_imp_@ above, a number of variableshas been defined to allow for greater flexibility.Whenever the speech code encounters an '@' sign it willsearch the database for a variable of that name andexecute the necessary replacement. Note that recursivereplacement of one variable with another is possible, sotry to avoid loops. The remaining variables it was unableto find in the database are hardcoded and will be replacedbefore output.If you add a new variable make sure to also add a databaseentry for it (without those '@' marks around!); otherwiseit won't get replaced and just look weird.
@the_monster@ : replaced with definite article plusmonster name for non-unique monsters@Monster@ : as above, but capitalized@the_monster@ : replaced with monster name@The_monster@ : replaced with capitalized monster name@a_monster@ : replaced with indefinite article plusmonster name, if several can exist@A_monster@ : as above, but capitalized@Monster@ : replaced with plain monster name@monster@ : es above, but capitalized
@monster@ : replaced by plain monster name,e.g. "rat" or "Sigmund"@Monster@ : as above, but capitalized@the_monster@ : replaced by definite article plusmonster name, or only the name if it isunique, e.g. "the rat" or "Sigmund"@The_monster@ : as above, but capitalized@a_monster@ : replaced by indefinite article plusmonster name, if more than one can exist,e.g. "a rat" or (again) "Sigmund"@A_monster@ : as above, but capitalized
For friendly monsters an additional "your"/"Your" isplaced before the monster name, respecting capitalizationand grammar (only for the_xxx).
For friendly monsters a special case takes effect. Insteadof adding the definite article for @the_xxx@ constructs,"your" or "Your" is used, respecting both capitalization andgrammar.
@pronoun@ : replaced be it, she, he as appropriate@Pronoun@ : replaced be It, She, He, as appropriate@possessive@ : replaced by its, her, his as appropriate
@pronoun@ : replaced by it, she, he, as appropriate@Pronoun@ : replaced by It, She, He, as appropriate@possessive@ : replaced by its, her, his, as appropriate
_friendly_imp_, _hostile_imp_, _tormentor_. There are also afew synonyms defined at the beginning of speak.txt such asfor @ATTACK@, @pointless@, @shouts@, @wails@, @yells@ and
_friendly_imp_, _hostile_imp_, and _tormentor_. There arealso a few synonyms defined at the beginning of speak.txtsuch as for @ATTACK@, @pointless@, @shouts@, @wails@, and
The best way to learn about how variables and other conceptscan be used is probably to see how it has been done forexisting messages.TESTING YOUR CHANGESShould you have a version of Stone Soup that has beencompiled with the WIZARD mode defined, this could greatlysimplify testing. You can check whether this is the case bypressing '&' during the game. If you are told that this isan "unknown command" you are out of luck and might considercompiling the game for yourself. You can download the sourcecode from the Crawl homepage [1].Read the "INSTALL" file in the main directory forinstructions. Should you, after reading the documentationand checking the archives of the Crawl newsgroup [2], stillhave any questions, ask away!If you have WIZARD mode compiled in, you can simply answer"yes" to the safety question resulting from pressing '&',and then test to your heart's content. Pressing '&' followedby a number of other keys will execute wizard mode commandsthat are all listed in the wizard help menu (press '&?').In particular, you can create a monster with '&M', andenforce behaviour on a monster by examining it (with 'x',as usual). In wizard mode this offers several new commandssuch as 'F' (make monster friendly/unfriendly) and 's'(make monster shout). These last two are of particularinterest to monster speech designers.You can also temporarily increase the likelihood of a givenmessage by adding a high weight value before it, e.g. w:500,or equally temporarily push it into another channel (e.g.MSGCH_WARN) to make it more noticeable.PUBLISHING YOUR ADDITIONS AND CHANGESIf you feel that your additions really add something to thegame and would like to make them available to the generalpublic, you can post them (in the form of a diff file, or inplain text) in the newsgroup [2] or as a feature request onsourceforge.net [1].[1] http://crawl-ref.sourceforge.nethttp://sourceforge.net/projects/crawl-ref[2] rec.games.roguelike.miscSince this newsgroup is being shared with a number of otherroguelike games, it is generally considered polite to flagsubjects of posts pertaining only to Crawl with "-crawl-" ora similar marker.
Ogres are huge, chunky creatures related to orcs. They are terriblemonsters who usually live to do nothing more than smash, smash, smash,and destroy.
Genealogists would call these species Common Ogres and Sapient Ogres rather,yet the folklore labels stuck somehow. These two are genuinely differentraces stemming from a mythological progenitor, the Primordial Ogre.While crossbreeding is possible, it is generally frowned upon in Ogresocieties: the resulting offspring is often ill-fated, and in very rare cases, even two-headed ogres result.Ogres are huge, chunky creatures who usually live to do nothing more thansmash, smash, smash, and destroy. They have great physical strength, butare bad at almost everything except fighting and mature quite slowly.Because of their large size they can only wear loose robes, cloaks andanimal skins. Although ogres can eat almost anything, their size alsomeans that they need to do so more frequently than smaller folk.
They have great physical strength, but are bad at almost everythingexcept fighting and learn quite slowly. Because of their large sizethey can only wear loose robes, cloaks and animal skins. Although ogrescan eat almost anything, their size means that they need to do so morefrequently than smaller folk.
Ogre Mages are slightly smaller and nimbler than their Commoncounterparts and grow a bit slower. They are unique among the beefierspecies in their ability to use magic, especially enchantments. Still,they also perform well in all types of melee combat, with a slightdisadvantage at short blades. While they perform better than Ogres in allmore civilised aspects of life, Ogre Mages have lost the ability todigest corpsed when not hungry.
Ogre-mages are a separate race of ogres who are unique among the beefierspecies in their ability to use magic, especially enchantments. Althoughslighter than their common ogre relatives they nevertheless have greatstrength and can survive a lot of punishment. They advance in level asslowly as high elves. In contrast to their Ogre cousins, Ogre Mages havelost the ability to digest corpses when not hungry.
Most often, small bands of Common Ogres raid the countryside orunderground dungeons, accompanied by a Sapient Ogre. The latter isusually at once the undisputed spokesman, medicine man and shaman of thegroup.