- v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
- Use this page to report any issues related to the migration.
Difference between revisions of "Random creature profile"
Doorkeeper (talk | contribs) (→Overview: quote i found online.) |
(Updated for Lua release) |
||
| (2 intermediate revisions by one other user not shown) | |||
| Line 2: | Line 2: | ||
{{Minorspoiler}} | {{Minorspoiler}} | ||
| − | This is a list of '''random creature profiles''' ('''RCPs''') which are used by procedurally generated creatures. RCPs use body parts from <code>body_rcp.txt</code> instead of <code>body_default.txt</code>. | + | This is a list of '''random creature profiles''' ('''RCPs''') which are used by procedurally-generated creatures. RCPs typically use body parts from <code>body_rcp.txt</code> instead of <code>body_default.txt</code>. |
== Overview == | == Overview == | ||
| − | RCP stands for "[http://www.bay12forums.com/smf/index.php?topic=30026.msg831163#msg831163 random creature profile]". RCP is | + | RCP stands for "[http://www.bay12forums.com/smf/index.php?topic=30026.msg831163#msg831163 random creature profile]". RCP is a [[Lua scripting|scripted]] [[raw]] template that defines the basic body, tissues and body attacks of a random creature before it receives [[Lua scripting#Tweaks|further randomness]] (three-eyed, wings of stretched skin, external ribs, uniform elemental composition, etc). Most amphibian, mammalian and reptilian RCPs have humanoid variations of themselves, described as "in humanoid form" or "{{Tooltip|twisted into humanoid form|If evil.}}". There are 243 standard RCPs and 81 humanoid variations, which brings the known total to 324. |
The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal [[creature]]s (e.g. [[albatross]]), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or [[web]]bing. | The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal [[creature]]s (e.g. [[albatross]]), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or [[web]]bing. | ||
| Line 11: | Line 11: | ||
[[Night troll]]s and [[bogeyman|bogeymen]] only use the generic "humanoid" RCP, and werebeasts use the humanoid animal forms. Primates, hexapods, octopods and decapods are unique to beast-like [[experiment]]s, while armless bipeds, wyrms, and the generic "snake" and "worm" RCPs are unique to failed experiments. | [[Night troll]]s and [[bogeyman|bogeymen]] only use the generic "humanoid" RCP, and werebeasts use the humanoid animal forms. Primates, hexapods, octopods and decapods are unique to beast-like [[experiment]]s, while armless bipeds, wyrms, and the generic "snake" and "worm" RCPs are unique to failed experiments. | ||
| − | This [https://nm.reddit.com/r/dwarffortress/comments/kq86x5/i_made_some_calculations_towards_determining_the/gi2l7py/ | + | == Technical details == |
| + | {{main|Lua scripting}} | ||
| + | |||
| + | Random creature profiles can be found in ``vanilla_procedural/scripts/``. By adding data to the corresponding tables, it is possible to [[mod]] in new random creature profiles. | ||
| + | |||
| + | This [https://nm.reddit.com/r/dwarffortress/comments/kq86x5/i_made_some_calculations_towards_determining_the/gi2l7py/ explanation from Toady], shared by Meph, goes into more detail on how procedural creature generation works: | ||
<blockquote> | <blockquote> | ||
| − | The | + | The ``body_rcp.txt`` file has the definitions it expects for bodyparts. (rcp stands for "random creature profile") The main thing is that the base "animal" word is doing most of the heavy lifting in terms of making the descriptions evocative, so the rcp's don't end up mattering that much. There are little internal definitions for each animal word, about 230 of them. If we ignore that, then we're more just working with "feathered quadruped" and so forth. |
Example of a random creature profile (for the elephant type): | Example of a random creature profile (for the elephant type): | ||
| − | + | <syntaxhighlight lang="lua"> | |
| − | tile='E' | + | random_creature_types.MAMMAL_ELEPHANT={ |
| − | + | name_string="elephant", | |
| − | + | tile='E', | |
| − | + | body_base="QUADRUPED", | |
| + | c_class="MAMMAL", | ||
| + | must_have_tail=true, | ||
| + | must_have_elephant_trunk=true, | ||
| + | min_size=500000, | ||
| + | weight=14 | ||
| + | } | ||
| + | </syntaxhighlight> | ||
So, hmm, perhaps the base and class lists are relevant here... | So, hmm, perhaps the base and class lists are relevant here... | ||
| − | classes: mammal, chitin exo, fleshy, amphibian, reptile, feathered reptile, avian, uniform (like 'composed of iron') | + | * classes (``random_creature_class``): mammal, chitin exo, fleshy, amphibian, reptile, feathered reptile, avian, uniform (like 'composed of iron') |
| − | bases: amorphous, insect, insect larva, spider, scorpion, ten legged, eight legged, worm, no limbs, quadruped, snake, humanoid, two legs + no arms, quadruped with front graspers (like a monkey) | + | * bases (``body_base_fun``): amorphous, insect, insect larva, spider, scorpion, ten legged, eight legged, worm, no limbs, quadruped, snake, humanoid, two legs + no arms, quadruped with front graspers (like a monkey) |
| − | The flags just force certain | + | The [[Lua functions#RCP Parameters|flags]] just force certain RCP additions, and prevent others from happening. For instance, the "slug" profile has "cannot have shell" because a slug with a shell is confusing. |
| − | Ah, here we go. The | + | Ah, here we go. The RCP are used via the "body tweak" system. A body can have a tweak from category one, a tweak from category two, and an attack tweak, respecting its profile flags. |
| − | Category one tweaks: wings, flightless wings, tail, proboscis, trunk, shell, antennae, head horns, large mandibles, twisted into humanoid form, six legged, eight legged | + | * Category one tweaks (``options.btc``): wings, flightless wings, tail, proboscis, trunk, shell, antennae, head horns, large mandibles, twisted into humanoid form, six legged, eight legged |
| − | Category two tweaks: hair, feathers, scales, exoskeleton, skin, skin/bones, no eyes, one eye, three eyes, beak missing, nose missing, external ribs, lidless eyes, skinless | + | * Category two tweaks (``options.btc2``): hair, feathers, scales, exoskeleton, skin, skin/bones, no eyes, one eye, three eyes, beak missing, nose missing, external ribs, lidless eyes, skinless |
| − | Attack tweaks: tail stinger, insect stinger, blood proboscis, fire, webs, breath (trailing flow), breath (glob), breath (undirected), secretion, poisonous blood, poisonous bite | + | * Attack tweaks (``options.attack_tweak``): tail stinger, insect stinger, blood proboscis, fire, webs, breath (trailing flow), breath (glob), breath (undirected), secretion, poisonous blood, poisonous bite |
| − | That material list looks almost right - here's the official list of variables: ash, mud, vomit, salt (powder), grime, snow, water, steam, flame, amber, coral, green glass, clear glass, crystal glass, charcoal, coke, salt (solid), ice, mineral (any), soil (any), gem (any), metal (any) | + | That material list (``random_creature_material``) looks almost right - here's the official list of variables: ash, mud, vomit, salt (powder), grime, snow, water, steam, flame, amber, coral, green glass, clear glass, crystal glass, charcoal, coke, salt (solid), ice, mineral (any), soil (any), gem (any), metal (any) |
| − | The "any" materials can't be "special", but there don't appear to be other restrictions. | + | The "any" materials can't be "[[Inorganic material definition token#SPECIAL|special]]", but there don't appear to be other restrictions. |
| − | There are various other implicit flags on these things when it comes to werebeasts etc. "humanoidable" and "beast", for example. So all night creatures require "humanoidable" and werebeasts require "beast" on top of that. Which is why we don't have wereblobs or even wereserpents. | + | There are various other implicit flags on these things when it comes to werebeasts etc. "humanoidable" and "beast", for example. So all night creatures require "humanoidable" and werebeasts require "beast" on top of that. Which is why we don't have wereblobs or even wereserpents. |
</blockquote> | </blockquote> | ||
| Line 441: | Line 453: | ||
| ape | | ape | ||
| [[File:Beast front grasp, two eyes.png]] | | [[File:Beast front grasp, two eyes.png]] | ||
| − | | | + | | BEAST_FRONT_GRASP_EYE_TWO |
| rowspan="2" | BEAST_FRONT_GRASP | | rowspan="2" | BEAST_FRONT_GRASP | ||
|- | |- | ||
| monkey | | monkey | ||
| [[File:Beast front grasp, two eyes, one tail.png]] | | [[File:Beast front grasp, two eyes, one tail.png]] | ||
| − | | | + | | BEAST_FRONT_GRASP_EYE_TWO, BEAST_FRONT_GRASP_TAIL_ONE |
|- | |- | ||
| primate, quadruped | | primate, quadruped | ||
| Line 542: | Line 554: | ||
[[Category:Creatures]] | [[Category:Creatures]] | ||
| + | [[Category:Lua]] | ||
[[ru:Random creature profile]] | [[ru:Random creature profile]] | ||
Latest revision as of 22:17, 24 October 2025
v52.04 · v0.47.05 This article is about the current version of DF.Note that some content may still need to be updated. |
This is a list of random creature profiles (RCPs) which are used by procedurally-generated creatures. RCPs typically use body parts from body_rcp.txt instead of body_default.txt.
Overview[edit]
RCP stands for "random creature profile". RCP is a scripted raw template that defines the basic body, tissues and body attacks of a random creature before it receives further randomness (three-eyed, wings of stretched skin, external ribs, uniform elemental composition, etc). Most amphibian, mammalian and reptilian RCPs have humanoid variations of themselves, described as "in humanoid form" or "twisted into humanoid form". There are 243 standard RCPs and 81 humanoid variations, which brings the known total to 324.
The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal creatures (e.g. albatross), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or webbing.
Night trolls and bogeymen only use the generic "humanoid" RCP, and werebeasts use the humanoid animal forms. Primates, hexapods, octopods and decapods are unique to beast-like experiments, while armless bipeds, wyrms, and the generic "snake" and "worm" RCPs are unique to failed experiments.
Technical details[edit]
Random creature profiles can be found in vanilla_procedural/scripts/. By adding data to the corresponding tables, it is possible to mod in new random creature profiles.
This explanation from Toady, shared by Meph, goes into more detail on how procedural creature generation works:
The
body_rcp.txtfile has the definitions it expects for bodyparts. (rcp stands for "random creature profile") The main thing is that the base "animal" word is doing most of the heavy lifting in terms of making the descriptions evocative, so the rcp's don't end up mattering that much. There are little internal definitions for each animal word, about 230 of them. If we ignore that, then we're more just working with "feathered quadruped" and so forth.Example of a random creature profile (for the elephant type):
random_creature_types.MAMMAL_ELEPHANT={ name_string="elephant", tile='E', body_base="QUADRUPED", c_class="MAMMAL", must_have_tail=true, must_have_elephant_trunk=true, min_size=500000, weight=14 }So, hmm, perhaps the base and class lists are relevant here...
- classes (
random_creature_class): mammal, chitin exo, fleshy, amphibian, reptile, feathered reptile, avian, uniform (like 'composed of iron')
- bases (
body_base_fun): amorphous, insect, insect larva, spider, scorpion, ten legged, eight legged, worm, no limbs, quadruped, snake, humanoid, two legs + no arms, quadruped with front graspers (like a monkey)The flags just force certain RCP additions, and prevent others from happening. For instance, the "slug" profile has "cannot have shell" because a slug with a shell is confusing.
Ah, here we go. The RCP are used via the "body tweak" system. A body can have a tweak from category one, a tweak from category two, and an attack tweak, respecting its profile flags.
- Category one tweaks (
options.btc): wings, flightless wings, tail, proboscis, trunk, shell, antennae, head horns, large mandibles, twisted into humanoid form, six legged, eight legged
- Category two tweaks (
options.btc2): hair, feathers, scales, exoskeleton, skin, skin/bones, no eyes, one eye, three eyes, beak missing, nose missing, external ribs, lidless eyes, skinless
- Attack tweaks (
options.attack_tweak): tail stinger, insect stinger, blood proboscis, fire, webs, breath (trailing flow), breath (glob), breath (undirected), secretion, poisonous blood, poisonous biteThat material list (
random_creature_material) looks almost right - here's the official list of variables: ash, mud, vomit, salt (powder), grime, snow, water, steam, flame, amber, coral, green glass, clear glass, crystal glass, charcoal, coke, salt (solid), ice, mineral (any), soil (any), gem (any), metal (any)The "any" materials can't be "special", but there don't appear to be other restrictions. There are various other implicit flags on these things when it comes to werebeasts etc. "humanoidable" and "beast", for example. So all night creatures require "humanoidable" and werebeasts require "beast" on top of that. Which is why we don't have wereblobs or even wereserpents.
List[edit]
In ASCII mode, nearly all RCPs use specific uppercase or lowercase letters if the monster type does not use a fixed tile, such as '&' for demons. Lobsters uniquely use the '¥' sign instead. RCPs with humanoid versions are bolded. Humanoid forms use the same tile as their standard counterparts.
Capitalization denotes body size. In most cases, anything larger than a dwarf (60,000) uses an uppercase letter. Only uppercase letters are shown here.
In-game, the tile color is determined by the creature's external color modifier. If it does not have a color modifier and is not skinless, it uses the outermost tissue layer's default material color. If it is skinless, it is displayed in dark red (4:0:0).
AAlbatrossAAlligatorAAnacondaAAnkylosauridIAntAAnteaterAAntelopeIAntlion larvaAApeIAphidAArmadilloBArmless bipedIAssassin bugBBadgerBBatBBearBBeaverIBeeBBisonBBlobWBristlewormBBuffaloBBullBBuntingBBushtitIButterflyBBuzzardICaddisflyCCamelCCapybaraCCardinalCCatICaterpillarCCavyCCeratopsidCChameleonCChickadeeCChickenCChinchillaICicadaCCivetIClick beetleCCoatiCCobraCCockatooICockroachCCondorCCoyoteCCrabCCraneICricketCCrocodileCCrowCCuckooIDamselflyIDarkling beetleDDecapodDDeerDDimetrodonDDonkeyDDoveIDragonflyDDuckIDung beetleEEagleWEarthwormIEarwigEElephantEElkFFalconFFantailFFinchIFireflyFFlamingoWFlat wormIFleaIFlyFFlycatcherFFoxFFrogFFruit batGGeckoGGila monsterGGiraffeGGoatGGooseGGopherIGrasshopperGGrebeGGrouseGGullHHadrosauridHHareHHarrierHHawkHHedgehogHHexapodHHippopotamusHHoneyeaterHHornbillIHornetHHorseHHumanoidHHummingbirdHHyenaIIguanaIIguanodontJJackalJJayKKangarooKKestrelKKingfisherKKingletKKiteKKoalaILacewingILadybugLLarkLLeechLLemurLLizardLLlama¥LobsterLLoonLLorisILouseLLyrebirdIMaggotMMagpieMMammothIMantisMMarmotMMartinIMayflyMMiteMMockingbirdMMoleMMongooseMMonitorMMonkeyMMooseIMosquitoIMothMMouseNNematodeNNewtNNightjarNNuthatchOOctopodOOpossumOOrioleOOspreyOOtterOOwlOOxpeckerPPandaPPangolinPPantherPParrotPPelicanPPenguinPPetrelPPheasantPPigPPigeonPPorcupinePPrimatePPterosaurPPythonQQuadrupedQQuailQQuetzalRRabbitRRaccoonRRatRRattlesnakeRRavenRRhinocerosIRhinoceros beetleWRibbon wormIRove beetleSSalamanderSSauropodIScarab beetleSScorpionIScorpionflySSerpentSSheepSShrewSShrikeSShrimpISilverfishSSkinkSSkunkSSlothSSlugSSnailSSnakeISnakeflySSparrowSSpiderSSquirrelIStag beetleSStarlingSStegosauridIStick insectIStoneflySStorkSSwallowSSwanSSwiftTTanagerTTapirSTarantulaITermiteTTheropodTThornbillIThripsTThrushTTickITiger beetleTTitmouseTToadTTortoiseTToucanTTurkeyTTurtleVViperVVultureWWalrusWWarblerWWarthogIWaspWWaxwingWWeaselIWeevilWWolfWWombatWWoodpeckerWWormWWrenWWyrmZZebra
Graphics[edit]
All random creatures except werebeasts use graphic sprites found in beasts.png and beasts_small.png. There are 19 primary body sprites (6 are alternate-legged variations) with additional sprite layers representing secondary body parts. Several RCPs have one or more secondary sprite layers by default. A few RCPs, like quadrupeds, have more than one body sprite to randomly select from.
- * The (generic) humanoid RCP has two or no eyes (by default) depending on the type of beast/monster:
- 2 eyes: bogeymen, experiments (intelligent humanoids), night trolls
- 0 eyes: experiments (amalgamations), nightmares, everything else (which are elementals)
Gallery[edit]
- Large sprites
- Small sprites













































