Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Dirst

Pages: [1]
1
DF Suggestions / Physician, heal thyself
« on: July 25, 2016, 02:15:14 pm »
The medical science in DF seems to be close to the barber-surgeon tradition, which fits dwarves thematically as they treat the body much like a machine in need of repair.  Add in bloodletting for injected toxins and you're basically done.

But surgery is not the only kind of medicine.  Even when most people accepted that haircuts and amputations ought to happen in the same shop, there was still a rival tradition of physicians who specialized in drugs and therapies.  This sister field to herbalists and alchemists seems like the elven way of healing.  Humans did both (badly) during DF's target time period.

Getting physicians to work at a basic level would require a simple raw update: the ability to add a negative concentration to a syndrome.  Generic symptomatic relief could also be accomplished with syndromes with negative severity ratings, though this could easily get overpowered.  Some of these remedies might be directly in plant extracts, while others would need to be produced using reactions with multiple reagents.

Bringing physicians on par with surgeons would require some medical procedures, in particular the ability to prescribe a specific remedy to a specific patient (rather than relying on cumbersome burrow assignments to get the poor sap to drink his medicine).  A prescription for a non-existent remedy would queue up a job to produce it.  Fort settings would control whether the job sticks around if the reagents are not yet available, or if the original patient recovers/dies.

Some prescriptions could be for simple therapies rather than specific medicines, for example a cold bath to reduce fever.

Adding in side-effects would be fairly simple (short-lived numbness with your cold bath, etc.), but to really get the feeling of medieval medicine the surgeons and physicians should be able to make mistakes.  Physically messing the procedure up is a distinct possibility, but without modern imaging and chemical testing the most likely fault will be misdiagnosing the problem.

The only previous hit I got on misdiagnosis was here.  It's reasonable for a physician to mistake The Undulating Planes Fever for Scorchedhair Fever, but it would be silly for a surgeon to miss a compound leg fracture.  What I'm proposing as a fairly equivalent system for both is to let the diagnostician generate a craftsmanship level for the diagnosis, which then governs how effective the treatment would be.  For example, the same traction bench can be used appropriately or inappropriately, depending on the diagnosis informing treatment.

Does this sound reasonable to everyone?  Did my search miss some megathread where all of this was already hashed out?

2
Mod Releases / MOVED: Accessibility Utility v1.02
« on: May 15, 2016, 02:58:22 pm »
This is actually more of a utility than a mod, so the topic has been moved to Utilities and 3rd Party Applications.

http://www.bay12forums.com/smf/index.php?topic=157631.0

3
Appearance Tweaks
v1.03 by Dirst

Download from DFFD
Backup location
Forum thread

This is a very simple mod that makes some cosmetic changes to standard creatures.  It incorporates the effects of the v0.40 mods "Pointy Ears" and "Bearded Ladies."  The mod is intended for Dwarf Fortress v0.43.01 or later, but it will run under 0.42.* without errors.

The first change is to describe blizzard men, elves, fairies, goblins, kobolds, pixies and satyrs as having "pointy ears."  Large ears are also described as being "long" instead of "tall" (which would be the norm for other races).

Pointy ears can also be applied to animal man races by placing the code [GO_TO_END][SELECT_CASTE:ALL][APPLY_CREATURE_VARIATION:TWEAKAPP_POINTY_EARS] as the last line of the creature definition.

The second change is to add caste-specific child and baby names to the races in creature_standard.  Young ones will now be labeled as "dwarven baby boy" or "pixie girl".  For creatures that already have caste-specific names, these are extended to the children as in "ogress child" rather than "ogre girl".

The third change is optional, which further decreases the gender dimorphism among dwarves.  The dwarven genders in vanilla Dwarf Fortress have identical statistics and opportunities, although there are two differences.

1. Dwarven childcare is the exclusive responsibility of the child's mother, and coincidentally all mothers are female.
2. Dwarven males have facial hair but females do not.

Point 1 is hardcoded into the game, but point 2 can be corrected with this mod.

The myths upon which dwarves are based are fairly vague about the creatures' appearance (it is not at all clear that they were even short), but the image of a stocky bearded humanoid about four feet tall was established by the time J. R. R. Tolkien wrote that Hobbits were "smaller than dwarves."  Mythical tales of female dwarves are virtually non-existent, and Tolkien continued this tradition by scarcely mentioning them.  In his writings, female dwarves have beards and are rarely seen by outsiders.

Many of the modern depictions of dwarves are based on Tolkien's, including role-playing games.  The written descriptions of dwarves tend to indicate that the females have facial hair, but the visuals that accompany these works don't always paint them that way.  Terry Pratchett's dwarves have males and females that are indistinguishable from one another, and it is considered impolite to ask.  This is done for comedic effect rather than any deep statement about dwarf biology (even dwarves can't tell the genders apart, which leads to some uncomfortable dating situations).

Another modern source is C. S. Lewis's Narnia series in which the dwarves are all male.  Gimli's line in the movie version of The Two Towers "...And this in turn has given rise to the belief that there are no dwarf women, and that dwarves just spring out of holes in the ground!  Which is, of course, ridiculous." is a condensed version of a passage from the book version of Return of the King "It was said by Gimli that there are few dwarf-women, probably no more than a third of the whole people. They seldom walk abroad except at great need. They are in voice and appearance, and in garb if they must go on a journey, so like to the dwarf-men that the eyes and ears of other peoples cannot tell them apart. This has given rise to the foolish opinion among Men that there are no dwarf-women, and that the dwarves 'grow out of stone'."  This was Tolkien poking fun at Lewis.


Installation:
Method 1 is a "direct" install.  Unzip TWEAKAPP.zip on top of your Dwarf Fortress folder.  You should be informed of a single overwrite.  If you do not want female dwarves to have beards, delete creature_standard.txt and rename creature_standard.alternate to creature_standard.txt.

Method 2 uses the Starter Pack's mod merging tool.  Unzip TWEAKAPP.zip into an empty folder inside the Starter Pack's LNP/Mods folder, such as TWEAKAPP.  Double-click "Appearance Tweaks" to move it from Available to Merged, where it will be highlighted in yellow due to overwriting a vanilla file.  Mix with other mods if desired, then click Install Mods.


Files included:
manifest.json
readme_TWEAKAPP.txt
raw/objects/c_variation_TWEAKAPP.txt
raw/objects/creature_standard.txt
raw/objects/creature_standard.alternate
raw/objects/descriptor_pattern_TWEAKAPP.txt



Version History:
1.03: Changed fairy/pixie wings so that both genders have the same color options (DF genetics for gender-linked traits is bugged); removed unused pattern descriptors
1.02: Added coloration for fairy and pixie wings, including several new color pattern descriptors
1.01: Turned bearded females into an option; no longer using creature variation for standard creatures; fixed fairy and pixie wings
1.00: Initial release

4
Utilities and 3rd Party Applications / Accessibility Utility v1.04
« on: April 17, 2016, 01:39:03 am »
Accessibility utility
Version 1.04
By Dirst

Download from DFFD
Discussion thread
Backup location

A set of simple commands for the DFHack console to aid in navigating the map, suitable for DF 0.42 and 0.43.  Comments and suggestions are welcome.  The current version includes four DFHack scripts.

Installation is simple.  Unzip Accessibility.zip onto your Dwarf Fortress folder.


access.lua
This script prints instructions for using the Accessibility utility.

access
General instructions are printed if "access" is typed alone.

access help
More detailed documentation is available by typing "access help".


bookmark.lua
This script defines, updates and deletes persistent bookmarks on the map.

bookmark help
Prints a short summary of the bookmark comamands.

bookmark list
Lists all current bookmarks, if any.

bookmark drop foo
Deletes a bookmark named foo.

bookmark clear all
Deletes ALL bookmarks.  Note the space between "clear" and "all" as a safety feature.

bookmark foo
Creates or updates the bookmark named foo at the current cursor location.  If the cursor is not present, the bookmark will be set as the center of the on-screen map.


goto.lua
This script will move the map (and cursor if it is present) to a specific location.  The goto script has two modes: bookmark and coordinates.

goto help
Prints a short summary of the goto commands.

goto foo
Moves the map to the bookmark named foo, if it exists.

goto # # #
Moves the map to the specified X, Y, Z coordinates.


whereami.lua
This script reports your current location as X, Y, Z coordinates and a very terse description of the tile such as "SOIL WALL" or "POOL FLOOR".
whereami will also report if the current location is recorded as a bookmark.

Known issues:
Bookmarks saved with version 1.00 (if you somehow acquired it) have incorrect Z coordinates.
Screen center is incorrect if the Text Will Be Text plugin is active, although the cursor location is accurate.

5
DF Suggestions / Levels of detail in Legends and elsewhere
« on: February 19, 2016, 11:39:48 am »
Based on the conversation here, it appears that DF is great at creating detailed living worlds but not so good at describing them at a summary level.

The suggestion here is to attach to each historical event an importance level analogous to the importance of appearance modifications.  These importance levels would be weighted by category to derive an overall score, and only those events that exceed a (configurable) threshold get displayed to the player.  The weights and threshold might be left completely up to the player, restricted based on knowledge, or both.  I think that the defaults should depend on values and/ore personality traits of the character, and could be used to rank conversation topics (for selection by NPCs and menu position for players).

Note that an event can be more famous than its context.  Even people who "remember the Alamo" might not know the name of the war containing that siege.  Assuming unrestricted access to Legends, a player can always suss out the context if interested.

6
DF Suggestions / Butchering Diplomacy
« on: December 17, 2015, 01:38:24 am »
First, what I don't mean:

1. Intentionally screwing up diplomacy to start wars.
2. Chopping up diplomats.

Now on to what I am suggesting:

The TREE_CAP_DIPLOMACY tag allows an entity to negotiate limits on how many trees the fort can slaughter and still remain on good terms, which really only makes sense if their ethics reject KILL_PLANT.  I'm suggesting a similar tag for entities that reject KILL_ANIMAL.  In theory there could diplomacy about any extreme ethic, but limits on butchering seem like a simple extension to give herbivorous animal people entities some character.

7
DF Suggestions / Professional-strength pronouns
« on: December 20, 2014, 06:58:49 pm »
This came up in the FotF thread and deserves its own Suggestion.  It started as:
Would it be possible to get more control over gender in the future? As well as the pronouns used themselves? I don't expect trans dwarves in the vanilla game, but being able to have enough control to mod it in thoroughly would be really nice. Being able to designate pronouns for a caste would be pretty much solve the problem, I think.
Caste-level tags for pronouns would help in a number of cases where a modder would like a little more control over how the game refers to a caste.  At the moment, pronouns are hard-coded as follows:
A caste with a [MALE] tag uses "he" and "him" and "his" (and a mars symbol)
A caste with a [FEMALE] tag uses "she" and "her" and "hers" (and a venus symol)
A creature with no [MALE] or [FEMALE] tags anywhere uses "it" and "it" and "its" (and no symbol)
An ungendered caste in a creature that has genders uses feminine pronouns (but no symbol)
Plural is the same for everyone.  Second person is the same for everyone.

The above works just great for typical cases and for insects (where the neuter castes are actually sub-females), but there are three specific cases where moddable pronouns would be very helpful.

1. Supporting localization in languages other than English.  Pronouns can be fairly complicated and English happens to use the same words in several categories.  Simple string-replacement won't cover all of the cases.  For example, Spanish differentiates second-person references into personal and formal.
2. Dealing with neuter castes.  If we add a genderless "golem" caste to Dwarves, it would use feminine pronouns even though the proper form would be "it."  The modder could decide that non-reproducing castes are treated as sub-males or sub-females or "it".  The modder could also refer to a genderless creature as a "he" or a "she" if desired.
3. Dealing with non-standard references.  The simplest use-case is to make all references gender-neutral (probably by abusing "they"), but a society might have for example a biologically male caste that is socially feminine.  This only matters if the caste is fertile and capable of marriage, otherwise it can be treated as a special case of 2 above.

An extension would be to allow noble positions (or even professions) to override caste-level tags.  This allows the royal we as well as strange customs such as referring to all generals as male, or all priests as female, all no-good cheesemakers as "it" or whatever.


I recommend keeping the default behavior exactly as it is, because it does work for the majority of cases.  The actual tag might look something like:
[PRONOUN:I:we:me:us:my:our:he:they:him:them:his:their:his:theirs:himself:themselves:'♂']

8
The Earth Strikes Back!

A mod for Dwarf Fortress v0.42 and v0.43.



Requirements:
- Dwarf Fortress v0.42.04 or later
- DFHack 0.42.04r1 or later
- Rubble 8.2.0 or later (for Rubble version only)

Previous version for Dwarf Fortress v0.40 is available here.

This mod includes new creatures, some new high-value gems to balance the risk posed by the new creatures, new workshops to mitigate the risks, exotic new plants as a side-effect of the new creatures' and gems' origins, and graphics for Stonesense, TWBT, and the main interface.


Background:
The world is flush with life, anywhere and everywhere we witness an endless variety of living things.  Not only do we see birds in the sky, beasts on the ground and fish in the sea, but ancient trees burrow into the earth itself for sustenance.  Some, such as the Dwarves and Goblins, are aware that life is as boundless below the surface as above it, filling great caverns with fantastic plants and animals and peoples.  Life, it seems, is everywhere.

From where does all of this life come?  Doubtless the gods forged it originally, striking upon the anvil of the world with unimaginable crafts to create the infinite variety of living things we see today.  To those races that have tamed even the simplest metals, it is obvious that the seas and the soil are too soft a foundation upon which to forge anything of consequence... life must have been forged on solid rock.  But we do not need to take this on faith... the Dwarves who mine into solid rock know that this is true.

When the gods forged the first life, their strikes were of such incredible force that even the forgotten embers possessed power beyond mortal comprehension.  These embers, buried deep within the rock, imbue the surrounding stone with the dignity and vigor of a living thing.  Fresh, hot embers are surrounded by Living Stone that can be quite dangerous if awakened by careless mining.  The smaller embers have cooled leaving behind Hidden Gems where they otherwise would not be expected.

Any miner knows that the surest way to prosperity is to strike the earth.  Wise miners know that sometimes the earth strikes back.


Features:
Hidden Gems
High-value gems lie hidden within the layer stones, and there is one Hidden Gem type for each of the 24 types of standard layer stone (the 25th and 26th, obsidian and slade, are special enough already).  They resemble common gems, but all are precious due to their special origins.  For example, Hidden Onyx is found within limestone and is much more valuable than common onyx.

Living Stone
Some stone still burns with enough animating force to react when struck by a pick, and this is when an Awakened Stone pulls itself free of the rock to attack the miner.

Awakened Stones
A bewildering hybrid of flesh and stone, an Awakened Stone appears to be a boulder with a face and four long, clawed arms.  The core of this creature is nerve and muscle and bone, but it is covered in a thick layer of stone and has mud running through its veins.  Had it been left in peace, its iridescent eyes would have eventually solidified into Hidden Gems.  A single Awakened Stone is no match for a prepared militia, but these creatures usually turn up deep in the mines where the only protection comes from the miner's pick.

Tributes, Altars and Secrets
Fortunately, Dwarves have learned how to pacify Living Stone so that the Awakened Stones that emerge are tame.  This is accomplished by researching a Secret (like necromancy, but less icky) or building a Tribute workshop from three blocks of that layer stone (or an Altar from a boulder of that stone inside an appropriate temple) and sacrificing a gem.  Each miner that learns the Secret or sacrifices an appropriate gem at the Tribute or Altar will usually be at peace with any Living Stone he or she awakens.  An appropriate sacrifice is expensive: either a large gem or any cut gem of that layer's Hidden Gem.

A Secret or sacrifice is specific to a miner and a layer stone.  A miner who has made Tribute to Limestone will be at peace with any new Awakened Limestones he or she frees from the rock, but would still be considered an enemy by Awakened Granite.  Another miner from the same fortress would anger an Awakened Limestone unless he or she also made an appropriate sacrifice.

Awakened Magma and Incandescent Stones
Living Stone that was unlucky enough to be awakened by magma is similar to an Awakened Stone, except that it is red-hot with heat and anger.  Tributes are of no use pacifying these creatures because they were not awakened by miners.  Living Stone that melts in magma becomes Awakened Magma, while "magma-safe" Living Stone becomes Incandescent Stone.

Wyrms
Embers of creation that have cooled leave Hidden Gems, those that are still warm leave Awakened Stones, and the hottest ones leave an egg that hatches into a fast-growing Wyrm.  Although it hatches about the same size as an Awakened Stone, it will be the size of a dragon within a month.

Unlike Awakened Stones, these embers burn so hot that most of a Wyrm remains organic after it is slain.  Unfortunately, these hot embers are very difficult to pacify with Tribute.  A Dwarf who has made an appropriate Tribute does not calm a Wyrm, but at least the beast won't be berserk when it emerges.  Usually.

Awakened Storms
Embers of creation that fall onto a lake or river simply burn their way through to the rock below, but an Ember that falls into the ocean stays in contact with the water long enough to affect it.  The boiling region rises above the surface to form a swirling mass of clouds and lightning that can be devastating to a coastal settlement.

Gem Seeds and Gem Vines
The boundary between animate Living Stone and inanimate Hidden Gem is not always simple or obvious.  Some Hidden Gems still contain enough force that they can be coaxed back to life.  A dwarf can attempt to extract a Gem Seed from a Hidden Gem at an appropriate Tribute.  If the extraction is successful, the Gem Seed can be planted to produce Gem Vines that can be brewed into alcohol and occasionally produce more Hidden Gems.

Pet Rocks
People often take comfort from talking to their plants or pets, even if there is no obvious response.  Some people have adopted bits of Living Stone as their conversation partners... at least they believe they are talking to Living Stone.  It is very difficult to tell Living Stone apart from regular stone.

DFHack Scripts
The mod includes seven DFHack scripts, more-item-descriptions, tesb-add-pets, tesb-create-unit, tesb-info, tesb-job-monitor, tesb-wake, and tesb-weather.

The tesb-info script print the mod's version number and gives information on how often Living Stone and Hidden Gems appear.

The other scripts are used internally, but they can be entered into the DFHack console if desired.  Use with -help for parameters.


Installation:
Method A: If you do not use Rubble or the Starter Pack's mod tool.

1. Unzip the file on top of your Dwarf Fortress folder.  Ensure that you will be prompted before overwriting anything.

2. You will be notified that raw/objects/entity_default.txt already exists.  If you use no other mods, accept this overwrite.

3. You will be notified that stonesense/index.txt already exists.  Again, if you use no other mods, accept this overwrite.

4. You will probably be notified that raw/onload.init already exists.  If this happens, copy the contents of this file into the your existing init file.

5. If you do use other mods, copy the contents of raw/objects/entity_default.insert and paste them into raw/objects/entity_default.txt between the [PERMITTED_BUILDING:SCREW_PRESS] and [PERMITTED_REACTION:TAN_A_HIDE] lines.  Then open the stonesense/index.txt file to add the text tesb/index.txt by itself on the last line.

6. If you do not want to use the creature graphics (e.g., want to use ASCII only), delete the file raw/graphics/graphics_TESB_awakenedstone.txt (you can also delete the tesb subfolder if desired).

7. To enable the TWBT overrides, add the contents of data/init/overrides.insert to data/init/overrides.txt (preferably at the end of the file).  Do this after any graphics packs changes you make with a Starter Pack.

8. If you use GemSet, you may wish to search-and-replace [CREATURE_TILE:'W'] with [CREATURE_TILE:'l'] in creature_TESB.txt to use a more Wyrm-like corpse tile.

Method B: If you want to use the Starter Pack's mod tool to manage The Earth Strikes Back.  This method is a bit hackish until I can figure out an elegant solution.

1. Unzip the file into a folder inside the Starter Pack's LNP/Mods folder, such as TESB.

2. Cut the stonesense folder out of this location and paste it into your Dwarf Fortress folder.  You will be notified that stonesense/index.txt already exists.  (Or simply delete this folder if you do not want Stonesense assets.)

3. If you use no other mods with Stonesense content, accept this overwrite.  Otherwise, add tesb/index.txt by itself on the last line.

4. Cut the grahics folder (which is inside the raw folder just extracted) out of this location and paste it into the same spot under LNP/Graphics/<your graphics pack>/raw.  There should be no conflicts.  (Or simply delete this folder if you want to use ASCII graphics.)  If you use GemSet, you may wish to search-and-replace [CREATURE_TILE:'W'] with [CREATURE_TILE:'l'] in creature_TESB.txt to use a more Wyrm-like corpse tile.

5. Cut the data folder out of this location and past into your Dwarf Fortress folder.  To enable the TWBT overrides, add the contents of data/init/overrides.insert to data/init/overrides.txt (preferably at the end of the file).  Do this after any graphics packs changes you make with a Starter Pack.

6. Move the readme_TESB.txt file somewhere convenient if desired.

7. Double-click "The Earth Strikes Back!" to move it from Available to Merged, where it will be highlighted in yellow due to overwriting a vanilla file.  Mix with other mods if desired, then click Install Mods.

Method C: If you want to use Rubble 7.3.1 or later.

1. Acquire the Rubble module from DFFD.

2. Place ZIP file in Rubble's addons folder.  Do not unzip it.

3. Check The Earth Strikes Back!.  It will automatically enable Base if necessary.  This mod is compatible with First Landing.

4. This version of the mod includes several configration variables to customize your experience.
- Creature graphics may toggled be ON or OFF
- Secrets may be toggled ON or OFF
- Gem vines may be toggled ON or OFF
- Pet rocks may be toggled ON or OFF (but who could every toggle off such adorable creatures?)
- Living stone may be set to COMMON, RARE or NEVER
- Hidden gems may be set to COMMON, RARE or NEVER

Setting living stone to NEVER prevents anything from appearing while mining, and disables all of the creatures other than pet rocks.  Setting hidden gems to NEVER has the side-effects of disabling plants and turning Wyrm eyes into common gems.  If living stone and hidden gems are *both* set to NEVER, then Tributes have no function and are disabled.

Stonesense assets are installed if creature graphics are ON.  Note that Stonesense is not save-specific, so it is sufficient to install it once.

5. Generate raws normally.



Future Development Plans:
1. Leverage new DF 0.42/0.43 features.
2. Contribute to research on fixing spawned creature behavior.
3. Make the graphics a little less embarassing.



Reference:
Hidden Gems
All Hidden Gems are precious (material value 40) and can be used normally for gemcutting and encrusting once mined.  However, when they are still in the ground they are indistinguishable from the layer stone around them even to DFHack tools like prospect and reveal.  A notification such as "You have struck hidden amethyst!" will be generated whenever a Hidden Gem is found.  There are twenty-four types of Hidden Gem, one for each of the main layer stones in the game (the 25th and 26th, obsidian and slade, are special enough on their own).

   Hidden amber opal is found in sandstone.
   Hidden amethyst is found in gabbro.
   Hidden aquamarine is found in schist.
   Hidden beryl is a golden-yellow-colored gem found in marble.
   Hidden black opal is found in dolomite.
   Hidden bone opal is a beige-colored gem found in siltstone.
   Hidden cherry opal is a chestnut-colored gem found in rock salt.
   Hidden emerald is found in granite.
   Hidden fire opal is a scarlet-colored gem found in mudstone.
   Hidden garnet is a blue-colored gem found in gneiss.
   Hidden milk opal is a cream-colored gem found in claystone.
   Hidden onyx is a black and white gem found in limestone.  Like normal onyx, it is colored "black" for game purposes.
   Hidden pinfire opal is a flax-colored gem found in conglomerate.
   Hidden pyrite is a silver-colored gem found in dacite.
   Hidden pyrope is a dark-red-colored gem found in slate.  Like normal black pyrope, it is colored "black" for game purposes.
   Hidden quartz is a cream-colored gem found in andesite.
   Hidden shell opal is an ivory-colored gem found in shale.
   Hidden spinel is a purple-colored gem found in diorite.
   Hidden sunstone is a red gem with yellow flecks found in basalt.  Like normal sunstone, it is colored "pumpkin" for game purposes.
   Hidden tourmaline is an indigo-colored gem found in quartzite.
   Hidden turquoise is found in rhyolite.
   Hidden wax opal is a flax-colored gem found in chert.
   Hidden white opal is found in chalk.
   Hidden zircon is a red-colored gem found in phyllite.

Note that material preferences for Hidden Gems are unrelated to the normal gems with similar names.  That is, a Dwarf with a preference for amethyst will not be impressed by hidden amethyst, and vice versa.  This is due to the same system that makes "gold" and "native gold" unrelated preferences in the vanilla game.

Spoiler: Technical details (click to show/hide)

Living Stone
When a tile of Living Stone is mined, the resulting boulder animates into an Awakened Stone.  Whether that Awakened Stone is friendly or hostile depends on whether the miner performed a sacrifice at an appropriate Tribute.

Spoiler: Technical details (click to show/hide)

Awakened Stones
When Living Stone is disturbed by mining, it attempts to tear itself free of the surrounding rock to move about on its own.  You will receive an announcement like "Urist McMiner has awakened a creature of Living Limestone" if the miner previously made a sacrifice at an appropriate Tribute, and the Awakened Stone will be tame.  Otherwise you will receive an announcement like "Urist McMiner has incurred the wrath of an Awakened Limestone", and the Awakened Stone will be hostile.  There is a one-in-ten chance that a hostile Awakened Stone will be berserk.  If an Awakened Stone is hostile, it will remain hostile even if it later meets a Dwarf who made an appropriate Tribute.

An Awakened Stone appears to be a boulder with a face and four long, clawed arms.  Its surface is made of rock and its blood is mud, but while still animated it has organic fleshy innards with familiar bones and organs.  Upon death, an Awakened Stone reverts quickly to a normal boulder.
     
Awakened Stone
â
Urist likes awakened stones for their chiseled features.

In combat, an Awakened Stone is much more likely to bite than it is to use its claws.  Tame specimens can be trained for hunting or war, but they cannot breed.  Awakened Stones have a high running speed (60kph) but accelerate slowly, and they are not slowed down as much as other creatures by climbing or crawling (19kph).  They are also low-level building destroyers (able to destroy archery targets, slabs, statues, windows, wooden doors, and wooden hatches), making it that much harder to slow them down.

The creature tile for an Awakened Stone is â (although this will only be visible if the creature graphics are disabled).  The tile color is brown, dark gray, gray, light gray, or white depending on the stone type.

Spoiler: Technical details (click to show/hide)

Tributes and Altars
A Tribute is a 3x3 workshop constructed from three blocks of a layer stone, while an Altar is a 1x1 workshop constructed from a boulder of a layer stone.  An Altar will only function if it is built inside a temple dedicated to a deity associated with an appropriate Sphere (see Secrets below).

The Masonry labor is required to construct a Tribute or Altar and the Mining labor is required to perform sacrifices or extract Gem Seeds at one.  The sacrifices are very expensive, so it is recommended that a Manager be used to assign a specific miner to the workshop to ensure that the intended Dwarf performs the sacrifice.
     
Tribute
 O O   XXX
  ∩    XXX
 O O   XXX

Each Tribute or Altar allows two "sacrifice" reactions, either of which has the same effect upon the Dwarf performing the reaction.  The first reaction (shortcut lowercase-L) consumes a large gem, and the second one (shortcut lowercase-H) consumes a normal cut gem of the Hidden Gem associated with that stone.  For example, the Tribute to Marble allows "Sacrifice large gem (l)" and "Sacrifice hidden beryl (h)".

The Dwarf performing the sacrifice will be permanently affected by a syndrome (e.g., "marble favor") that has two effects.  The first effect is to reduce the hostility of any Awakened Stones or Wyrms that the Dwarf releases from Living Stone.  The second effect is that the Dwarf suffers half-damage from anything made of that stone, including falling onto a floor of that material.  Repeated sacrifices do not further reduce the damage.

The third reaction attempts to extract a Gem Seed from a rough Hidden Gem, with a shortcut key of lowercase-X.  For example, the Tribute to Marble allows "Extract hidden beryl seed (x)".  The attempt always destroys the rough Hidden Gem and produces a usable Gem Seed 50% of the time.

Spoiler: Technical details (click to show/hide)

Secrets
A person can also gain the "favor" syndrome by learning a divine Secret.  The Secret can be written down and learned by others, but unlike necromancy the holders of these secrets do not build towers.  Learning one of the Secrets does not prevent learning the others, so in principle a migrant can arrive who is already at peace with several types of Living Stone.

Sedimentary stones are in the EARTH and MINERALS Spheres.  Rock salt is also in the SALT Sphere.
Metamorphic stones are in the EARTH and MOUNTAINS Spheres.
Igneous intrusive stones are in the MOUNTAINS and CAVERNS Spheres.
Igneous extrusive stones are in the MOUNTAINS and VOLCANOS Spheres.
Flux stones are in the MINERALS and METALS Spheres.

Spoiler: Technical details (click to show/hide)

Awakened Magma and Incandescent Stones
These creatures were Living Stone awakened by natural causes, and as such there is no opportunity to calm them with Tributes.  In fact, these creatures are perpetually angry and completely untrainable.

They are also as hot as magma and always on fire.  The difference between Awakened Magma and Incandescent Stone is that the former has a molten surface while the latter has a red-hot solid surface of magma-safe stone (Basalt, Chert, Dolomite, Gabbro, Quartzite or Sandstone).  They are at home in subterranean magma formations, but often wander across the land in search of prey.
     
Awakened Magma
â
Urist likes awakened magmas for their mesmerizing colors.
     
Incandescent Stone
â
Urist likes incandescent stones for their hot tempers.

Spoiler: Technical details (click to show/hide)

Wyrms
A Wyrm resembles a wingless dragon, although it is covered in rock instead of scales.  These fast-growing beasts attack with their bites, claws and tails, and fortunately lack the fiery breath attack of their look-alikes.  Born about the size of an Awakened Stone, a Wyrm quadruples in size each week for four weeks to roughly the size of a dragon.  The initial miner who released the Wyrm will probably have the easiest time killing it.  Any Living Stone hot enough to emerge as a Wyrm will be hostile, but the creture is much less likely to be berserk if the miner had previously made an appropriate Tribute.
     
Wyrm
W
Urist likes wyrms for their rapid growth.
These fast-growing beasts attack with their bites, claws and tails, and have special attacks that vary depending on their type:
    Aquifer-bearing stones have a bite that causes all fat tissue to swell up (as it fills with water).
    Igneous extrusive stones can slap the ground with their tail, staggering nearby foes.
    Igneous intrusive stones can spit magma.
    Flux stones have steel for bones, teeth, and their oversized claws.
    The remaining Wyrms spit rocks quite often.

Spoiler: Technical details (click to show/hide)

Awakened Storms
An Awakened Storm is a huge, dense formation of clouds with four swirling arms around a central core.  These arms will batter and lash nearby creatures, but the lightning that surrounds them will strike any creature in the vicinity.  Lightning is far more dangerous to creatures standing in water, and that is likely because it is always raining when an Awakened Storm arrives.

An Awakened Storm does not have any vital organs, so killing it requires disrupting its core.  Once that is accomplished, you will be rewarded with a special Hidden Gem that cannot be acquired through mining.
     
Awakened Storm
§
Urist likes awakened storms for their swirling motion.

Spoiler: Technical details (click to show/hide)

Gem Seeds and Gem Vines
If the fortress extracts a Gem Seed from a rough Hidden Gem at a Tribute, that seed can be planted in an underground farm plot to produce a Gem Vine.  Each type of Hidden Gem has its own species of Gem Vine. The growths of this plant, known as "clusters," can be processed at a Still to produce 5 units of alcoholic "spirits" and a 20% chance of recovering a rough Hidden Gem.  For example, an amethyst seed can grow into an amethyst vine which produces amethyst clusters; those clusters can be brought to a Still to produce amethyst spirits and possibly a rough hidden amethyst.

The reaction at the Still is "brew gem cluster (g)" and requires a barrel or pot to hold the spirits.
Gem Vine
"
Urist likes gem vines for their gem clusters.

Spoiler: Technical details (click to show/hide)

Pet Rocks
These small pets are very low-maintenance because rocks don't eat or drink.  Unfortunately, they will not move unless picked up by a dwarf.  Pet Rocks should be pastured in meeting areas to make them more likely to be adopted, then released from the pasture in case the owner wishes to bring the new pet to work.  If any Pet Rock ever did anything, no one witnessed it.

Pet Rock
·
Urist likes pet rocks for their inactivity.

Spoiler: Technical details (click to show/hide)

DFHack Scripts
more-item-descriptions adds mod-specific information to the detailed item description screen.

tesb-add-pets adds specific pet castes to the civilizations of a specific entity, making them available at embark.  Here it is used to add Per Rocks associated the layer stones known to that civilization.

tesb-create-unit is version 0.55 of modtools/create-unit.  This mod-specific copy is used if the DFHack version is before 0.43.03-r1.

tesb-info reports the version of the mod and information about the probabilities of striking Living Stone or Hidden Gems while mining.

tesb-job-monitor is used in spawning Hidden Gems, Awakened Stones and some Pet Rocks while mining.  It also monitors the construction of Tributes to ensure they end up as the proper type.  This script is configured from onload.init and running it without arguments in the console will report the grace period.

tesb-wake is discussed in the technical details for Tributes.

tesb-weather is used to force rain when an Awakened Storm is on the map.

Spoiler: File list (click to show/hide)

Spoiler: Known bugs (click to show/hide)

9
DF Modding / The Earth Strikes Back Mod (now available in mod releases)
« on: October 14, 2014, 12:18:04 am »
Welcome to my first mod release.  This post is supposed to be a replica of what it will look like when it is released for real in the mods subforum.

Please let me know what you think, what doesn't work the way you think it should, and what doesn't work at all!



The Earth Strikes Back!

A mod for Dwarf Fortress v40.08 and later.



Requirements:
- Dwarf Fortress v40.08 or later
- DFHack 40.08r2 or later

This mod includes new creatures, some new high-value gems to balance the risk posed by the new creatures, new workshops to mitigate the risks, and graphics for both Stonesense and the main interface.


Background:
The world is flush with life, anywhere and everywhere we witness an endless variety of living things.  Not only do we see birds in the sky, beasts on the ground and fish in the sea, but ancient trees burrow into the earth itself for sustenance.  Some, such as the Dwarves and Goblins, are aware that life is as boundless below the surface as above it, filling great caverns with fantastic plants and animals and peoples.  Life, it seems, is everywhere.

From where does all of this life come?  Doubtless the gods forged it originally, striking upon the anvil of the world with unimaginable crafts to create the infinite variety of living things we see today.  To those races that have tamed even the simplest metals, it is obvious that the seas and the soil are too soft a foundation upon which to forge anything of consequence... life must have been forged on solid rock.  But we do not to take this on faith... the Dwarves who mine into solid rock know that this is true.

When the gods forged the first life, their strikes were of such incredible force that even the forgotten embers possessed power beyond mortal comprehension.  These embers, buried deep within the rock, imbue the surrounding stone with the dignity and vigor of a living thing.  Fresh, hot embers are surrounded by Living Stone that can be quite dangerous if awakened by careless mining.  The smaller embers have cooled leaving behind Hidden Gems where they otherwise would not be expected.

Any miner knows that the surest way to prosperity is to strike the earth.  Wise miners know that sometimes the earth strikes back.


Features:
Hidden Gems
Small clusters of high-value gems lie hidden within the layer stones, and there is one Hidden Gem type for each of the 24 types of standard layer stone (the 25th and 26th, obsidian and slade, are special enough already).  They resemble common gems, but all are precious due to their special origins.  For example, Hidden Onyx is found within limestone and is much more valuable than common onyx.

Living Stone
Even smaller clusters of stone still burn with enough animating force to react when struck by a pick.  Sometimes there isn't enough force left to do anything more than scare the miner.  But often an Awakened Stone pulls itself free of the rock and attacks the miner.

Awakened Stones
A bewildering hybrid of flesh and stone, an Awakened Stone appears to be a boulder with a face and four long, clawed arms.  The core of this creature is nerve and muscle and bone, but it is covered in a thick layer of stone and has mud running through its veins.  Had it been left in peace, its iridescent eyes would have eventually solidified into Hidden Gems.  A single Awakened Stone is no match for a prepared militia, but these creatures usually turn up deep in the mines where the only protection comes from the miner's pick.

Tributes
Fortunately, Dwarves have learned how to pacify Living Stone so that the Awakened Stones that emerge are tame.  This is accomplished by building a Tribute workshop from three blocks of that layer stone and sacrificing a gem.  Each miner that sacrifices an appropriate gem at the Tribute will be at peace with any Living Stone he or she awakens.  An appropriate sacrifice is expensive: either a large gem or any cut gem of that layer's Hidden Gem.

Tribute is specific to a miner and a layer stone.  A miner who has made Tribute to Limestone will be at peace with any new Awakened Limestones he or she frees from the rock, but would still be considered an enemy by Awakened Granite.  Another miner from the same fortress would anger an Awakened Limestone unless he or she also made an appropriate sacrifice.


Installation:
This mod requires a little adjustment to match the graphics pack you are using.  The version uploaded at the above link is set up for the Phoebus graphics pack because that is the default in the Starter Pack.

Installation will be easier once the Starter Pack's mod loader matures to be able to handle Stonesense graphics.

1. Unzip the file on top of your Dwarf Fortress folder.  Ensure that you will be prompted before overwriting anything.

2. You will be notified that raw/objects/entity_default.txt already exists.  If you use no other mods, accept this overwrite.

3. You will be notified that stonesense/index.txt already exists.  Again, if you use no other mods, accept this overwrite.

4. If you do use other mods, copy the contents of raw/objects/entity_default.insert and paste them into raw/objects/entity_default.txt between the [PERMITTED_BUILDING:SCREW_PRESS] and [PERMITTED_REACTION:TAN_A_HIDE] lines.  Then open the stonesense/index.txt file to add the text tesb/index.txt on its own line.

5. If you do not use the Phoebus graphics pack, you need to perform two search-and-replaces in the raw/objects/inorganic_stone_tesb.txt file.  First, replace all instances of (Phoebus)[ with (Phoebus) and then choose one of the following:
5a. Replace all instances of (CLA) with (CLA)[
5b. Replace all instances of (Ironhand) with (Ironhand)[
5c. Replace all instances of (Mayday) with (Mayday)[
5d. Replace all instances of (Spacefox) with (Spacefox)[
5e. Replace all instances of (Vanilla) with (Vanilla)[

6. If you do not want to use the creature graphics (e.g., want to use ASCII only), delete the file raw/graphics/graphics_tesb_awakenedstone.txt (you can also delete the tesb subfolder if desired).


Future Development Plans:
1. Change something.
2. Increment the version number.
3. Go to 1.


Reference:
Hidden Gems
All Hidden Gems are precious (material value 40) and can be used normally for gemcutting and encrusting once mined.  However, when they are still in the ground their unmined tiles are indistinguishable from the layer stone around them, although a notification such as "You have struck hidden amethyst!" will be generated.  There are twenty-four types of Hidden Gem, one for each of the main layer stones in the game (the 25th and 26th, obsidian and slade, are special enough on their own).

    Hidden amber opal is found in sandstone.
    Hidden amethyst is found in gabbro.
    Hidden aquamarine is found in schist.
    Hidden beryl is a golden-yellow-colored gem found in marble.
    Hidden black opal is found in dolomite.
    Hidden bone opal is a beige-colored gem found in siltstone.
    Hidden cherry opal is a chestnut-colored gem found in rock salt.
    Hidden emerald is found in granite.
    Hidden fire opal is a scarlet-colored gem found in mudstone.
    Hidden garnet is a blue-colored gem found in gneiss.
    Hidden milk opal is a cream-colored gem found in claystone.
    Hidden onyx is a blank and white gem found in limestone.  Like normal onyx, it is colored "black" for game purposes.
    Hidden pinfire opal is a flax-colored gem found in conglomerate.
    Hidden pyrite is a silver-colored gem found in dacite.
    Hidden pyrope is a dark-red-colored gem found in slate.  Like normal black pyrope, it is colored "black" for game purposes.
    Hidden quartz is a cream-colored gem found in andesite.
    Hidden shell opal is an ivory-colored gem found in shale.
    Hidden spinel is a purple-colored gem found in diorite.
    Hidden sunstone is a red gem with yellow flecks found in basalt.  Like normal sunstone, it is colored "pumpkin" for game purposes.
    Hidden tourmaline is an indigo-colored gem found in quartzite.
    Hidden turquoise is found in rhyolite.
    Hidden wax opal is a flax-colored gem found in chert.
    Hidden white opal is found in chalk.
    Hidden zircon is a red-colored gem found in phyllite.

Note that material preferences for Hidden Gems are unrelated to the normal gems with similar names.  That is, a Dwarf with a preference for amethyst will not be impressed by hidden amethyst, and vice versa.  This is due to the same system that makes "gold" and "native gold" unrelated preferences in the vanilla game.

Spoiler: Technical details (click to show/hide)

Living Stone
Living Stone appears in single tiles within its layer and also as single tiles within clusters of Hidden Gems.  Visually, it is indistinguishable from normal layer stones (and Hidden Gems) until the tile is mined, although you will receive a notification such as "You have struck living andesite!"

When a tile of Living Stone is mined, the resulting boulder animates with motions that create a cloud of dust.  If the ember is still hot enough, an Awakened Stone emerges from the rock.  Whether that Awakened Stone is friendly or hostile depends on whether the miner performed a sacrifice at an appropriate Tribute.  If the ember is relatively cool, the stone collapses into loose rubble and disappears for game purposes.

Spoiler: Technical details (click to show/hide)

Awakened Stones
When Living Stone is disturbed by mining, it attempts to tear itself free of the surrounding rock to move about on its own.  You will receive an announcement like "Urist McMiner has awakened a creature of Living Limestone" if the miner previously made a sacrifice at an appropriate Tribute, and the Awakened Stone will be tame.  Otherwise you will receive an announcement like "Urist McMiner has incurred the wrath of an Awakened Limestone", and the Awakened Stone will be hostile.  If an Awakened Stone is hostile, it will remain hostile even if it later meets a Dwarf who made an appropriate Tribute.

An Awakened Stone appears to be a boulder with a face and four long, clawed arms.  Its surface is made of rock and its blood is mud, but while still animated it has organic fleshy innards with familiar bones and organs.  Upon death, an Awakened Stone reverts quickly to a normal boulder.
     
Awakened Stone
â
Urist likes awakened stones for their chiseled features.

In combat, an Awakened Stone is much more likely to bite than it is to use its claws.  Tame specimens can be trained for hunting or war, but they cannot breed.  Awakened Stones have a high running speed (60kph) but accelerate slowly, and they are not slowed down as much as other creatures by climbing or crawling (19kph).  They are also low-level building destroyers (able to destroy archery targets, slabs, statues, windows, wooden doors, and wooden hatches), making it that much harder to slow them down.

The creature tile for an Awakened Stone is â (although this will only be visible if the creature graphics are disabled).  The tile color is brown, dark gray, gray, light gray, or white depending on the stone type.

Spoiler: Technical details (click to show/hide)

Tributes
A Tribute is a 3x3 workshop constructed from three blocks of a layer stone.  The Masonry labor is required to construct a Tribute and the Mining labor is required to perform sacrifices at one.  These sacrifices are very expensive, so it is recommended that a Manager be used to assign a specific miner to the workshop to ensure that the intended Dwarf performs the sacrifice.

Each Tribute allows two reactions, either of which has the same effect upon the Dwarf performing the reaction.  The first reaction (shortcut lowercase-L) consumes a large gem, and the second one (shortcut lowercase-H) consumes a normal cut gem of the Hidden Gem associated with that stone.  For example, the Tribute to Marble allows "Sacrifice large gem (l)" and "Sacrifice hidden beryl (h)".
     
Tribute
 O O   XXX
  ∩    XXX
 O O   XXX

The Dwarf performing the sacrifice will be permanently affected by a syndrome (e.g., "marble favor") that has two effects.  The first effect is that any Awakened Stones that the Dwarf releases will be tame rather than hostile.  The second effect is that the Dwarf suffers half-damage from anything made of that stone, including falling onto a floor of that material.  Repeated sacrifices do not further reduce the damage.

Spoiler: Technical details (click to show/hide)

Spoiler: File list (click to show/hide)

Spoiler: Change log (click to show/hide)

Spoiler: Known bugs (click to show/hide)

10
DF Suggestions / Minor interface tweaks
« on: July 19, 2014, 10:36:58 pm »
Just a couple minor thoughts on the new interface elements.

First, the numbers on the calendar should be lined up, rather than using the typical convention that makes it obvious how many digits there are in the number. This isn't nearly as important on a calendar (even in some future version where the different entities have different calendars, it still won't be important).

Second, the Creature Feature on the loading screen is a great idea, but it'd be a little better if it used any graphics packs installed.  On a non-graphics-constrained machine, they could even run across the screen.

Any other ideas on minor interface bits?

11
DF Suggestions / Dwarven genetics
« on: June 11, 2014, 12:19:14 pm »
I've seen the ideas of genetics and heredity mentioned a few times, most recently in this thread.  I'd like to come up with a generalizable solution.

Some have proposed a set of binary genes, and the offspring gets one of the bits from each parent.  In a game where the stats range from 0 to 5000, that's a big waste of storage space and it doesn't even address caste differences.

If you look at how attributes are generated in the raws,

[PHYS_ATT_RANGE:STRENGTH:450:950:1150:1250:1350:1550:2250]

the offspring has an equal chance of being in each of the six bins, and I'm assuming for simplicity the score itself if uniformly distributed within the bin.  Therefore, a reversible function can turn the attribute score into a relative attribute score of "bin.location_within_bin".  So here a score of 1300 would be a relative score of 3.5.  If the other parent had a score of 2000 on the same attribute scale, that would be a relative score of 5.6429.  A good starting point for the offspring would be to average the relative scores, yielding 4.5715 (which translates to an attribute of 1464).

Just having it as 1464 would be boring, especially if we want to allow some type of "mutations."  Therefore we apply this result back to the attribute range, substituting 1464 in for the median, keeping the endpoints, and adjusting the other bins proportionally.

[PHYS_ATT_RANGE:STRENGTH:450:1084:1337:1464:1543:1700:2250]


This personalized attribute range is used to calculate the offspring's attribute, but it is compared to the original scale when calculating this creature's relative score later on.  In fact, the personalized range can be discarded after the attributes are determined.  An important feature is that it allows for proper heredity when castes have different attribute ranges.

The same mechanism can be used for appearance traits such as eye depth and body length.  It could be applied to coloration, though it wouldn't work quite as elegantly if castes have different numbers of possibilities and/or the colors were arranged haphazardly.

All of the above could be implemented behind the scenes with no changes to the raws.  Getting coloration to work "correctly" would require a change to the raws, something like:

[SET_TL_GROUP:BY_CATEGORY:ALL:SKIN]
    [TL_COLOR_MODIFIER:PARENT:FEMALE:100:PARENT:MALE:100:BROWN:1:BURNT_UMBER:1:CINNAMON:1:COPPER:1:DARK_BROWN:1:
        DARK_PEACH:1:DARK_TAN:1:ECRU:1:PALE_BROWN:1:PALE_CHESTNUT:1:PALE_PINK:1:PEACH:1:PINK:1:RAW_UMBER:1:SEPIA:1:
        TAN:1:TAUPE_PALE:1:TAUPE_SANDY:1]
    [TLCM_NOUN:skin:SINGULAR]


Now the offspring has a weight 100 chance of getting the mother's skin color, a weight 100 chance of getting the father's skin color, and a slight chance of any valid color.  Not exactly realistic, but servicable.  It also accepts current raws gracefully; they can either ignore the parents, or insert a weight for each parent by default.

Trying to reverse-engineer RGB ranges is probably not the answer because colors are not a convex set:  that is, the colors between valid colors are not necessarily valid colors themselves.  Contrast this with the attributes above, where any number between 450 and 2250 is automatically valid.


To get really generalizable, we need to define genders in the raws.  The tags [MALE] and [FEMALE] can be brought along as synonyms for [GENDER:MALE] and [GENDER:FEMALE], with some default mating scheme that uses them.

I'm envisioning creature-level tags along the lines of:

Human-like creature, default if [GENDER:MALE] and [GENDER:FEMALE] exist:
[MATING:mother:FEMALE:1:father:MALE:1]
    [MATING_SEASON:SPRING:SUMMER:FALL:WINTER]
    [GESTATION:mother:PROB:100:START:0:0:END:0:250] Modeled on syndrome creature effects, but with year:day lengths.
        [OFFSPRING:MALE:100:FEMALE:100] Effectively population ratios, but could vary by type of MATING.
            [OFFSPRING_ATT_WEIGHT:ALL:mother:1:father:1]  The default would be equal weights from each parent, so this is redundant.
    [GESTATION:mother:PROB:2:START:0:0:END:0:250] Twins
        [OFFSPRING:MALE:100:FEMALE:100]
            [OFFSPRING_ATT_WEIGHT:ALL:mother:1:father:1]

Here ALL refers to attributes like strength and willpower.  They could, in principle, each have different weighting.

Worm-like creature:
[MATING:parent1:HERMAPHRODITE:1:parent2:HERMAPHRODITE:1]
    [MATING_SEASON:SPRING]
    [GESTATION:parent1:PROB:80:START:0:0:END:0:100]
        [OFFSPRING:HERMAPHRODITE:100]
            [OFFSPRING_ATT_WEIGHT:ALL:parent1:3:parent2:1]
    [GESTATION:parent2:PROB:80:START:0:0:END:0:100]
        [OFFSPRING:HERMAPHRODITE:100]
            [OFFSPRING_ATT_WEIGHT:ALL:parent1:1:parent2:3]


Budding creature:
[MATING:parent:ASEXUAL:1]
    [MATING_SEASON:SUMMER]
    [GESTATION:parent:PROB:100:START:0:0:END:0:100]
        [OFFSPRING:ASEXUAL:100]


Creature with a pecking order:
[MATING:mother:FEMALE:1:father:ALPHA_MALE:1]
    [MATING_SEASON:SPRING]
    [GESTATION:mother:PROB:100:START:0:0:END:0:200]
        [OFFSPRING:ALPHA_MALE:25:BETA_MALE:25:FEMALE:50]
[MATING:mother:FEMALE:1:father:BETA_MALE:1]
    [MATING_SEASON:SUMMER]
    [GESTATION:mother:PROB:100:START:0:0:END:0:200]
        [OFFSPRING:ALPHA_MALE:5:BETA_MALE:45:FEMALE:50]

If there are any available alpha males, the beta males won't get a chance to reproduce.

Two "different creatures" in a single entity:
[MATING:mother:FEMALE_TIGERMAN:1:father:MALE_TIGERMAN:1]
    [MATING_SEASON:SPRING]
    [GESTATION:mother:PROB:100:START:0:0:END:0:200]
        [OFFSPRING:TIGERMAN_MALE:1:TIGERMAN_FEMALE:1]  Remember, castes and genders aren't quite the same thing.
[MATING:mother:FEMALE_PANTHERMAN:1:father:MALE_PANTHERMAN:1]
    [MATING_SEASON:SPRING]
    [GESTATION:mother:PROB:100:START:0:0:END:0:200]
        [OFFSPRING:PANTHEMAN_MALE:1:PANTHERMAN_FEMALE:1]


Newcomer-like creature:
[MATING:mother:FEMALE:1:father:GANNAUM:1:catalyst:BINNAUM:1]
    [MATING_SEASON:SPRING:SUMMER:FALL:WINTER]
    [GESTATION:mother:PROB:100:START:0:0:END:0:250]
        [OFFSPRING:FEMALE:99:GANNAUM:99:BINNAUM:2]
            [OFFSPRING_ATT_WEIGHT:ALL:mother:1:father:1] This is not redundant; the BINNAUM contributes no genetics.
    [GESTATION:mother:PROB:2:START:0:0:END:0:250]
        [OFFSPRING:FEMALE:99:GANNAUM:99:BINNAUM:2]
            [OFFSPRING_ATT_WEIGHT:ALL:mother:1:father:1]


The only change to the coloration issue would be using the parent identifiers instead of gender tags.

Right now the game seems to default to feminine pronouns for sterile castes in a gendered creatures.  We could expand the gender definitions to include pronouns to be explicit about what we want, for example [GENDER:STERILE:she:her:her:hers] and [GENDER:BINNAUM:he:him:his:his] and [GENDER:I_DONT_WANT_TO_TELL_YOU:they:them:their:theirs].

It would be up to the entity raws to define what a marriage is.  For example, in the Newcomer entity, a marriage is a FEMALE and a GANNAUM; BINNAUMs are involved in procreation but do not marry.  It should be flexible enough to allow marriages with X-to-Y members of a gender (harem is 1 male and 1:10 females, marriage group is 2:4 males and 2:4 females, etc.).  It should also dictate if someone else in the marriage can take over childcare, and at what point that becomes an option.

Edit: Changed colors to be less hostile to the light-background forum setting.

12
DF Suggestions / New export/view format for Legends mode
« on: April 17, 2014, 09:00:29 am »
With all the talk about worlds continuing and how awesome Legends will result from it, it occurred to me that a relatively straightforward improvement would be an option to export Legends data in wikitext.  Then a desktop wiki client like Zim and others can browse it.  I haven't found any prior suggestion along these lines, but my experience with the forum search function has been less than ideal.

I don't know the details, but it sounds similar to what Legends Viewer does under the hood.  And it might be appropriate that this stay a third-party utility that parses XML into wikitext; I can see it going either way.  If wikitext generation is done natively, it can include additional data like the appearance of each historical figure and pages on known procedurally-generated species/beasts.    A norm of including a wikitext page alongside each mod (in the raw folder, but ignored by the main game) would also be useful since they could be stuffed into the local wiki for the player's convenience.

Regardless, someone will come up with utilities to spruce up the wikitext (for example, embedding links to the DF wiki).

Zim itself is cross-platform and GPL2, so it should be possible to package it alongside DF or LNP.

13
DF Suggestions / A handful of ideas
« on: March 13, 2014, 01:56:22 pm »
I've decided to core-dump several ideas here rather than pollute the forum with multiple new threads, especially since I know each of these things has been discussed before (at least a little bit).  The text isn't showing up quite the way I want it, but hopefully it's decipherable.

Any links that I missed to previous discussion on the topics would be appreciated, and of course fire away at the merits (technical or Dwarfiness) of the ideas here.

----
Keys

http://www.bay12forums.com/smf/index.php?topic=115254

The idea of keys has come up in multiple threads applied to locking doors.  There are two main objections:
1. Door keys would proliferate, causing FPS issues similar to coins ("pocket lint" problem)
2. The pathing code doesn't seem to be able to handle some-Dwarves-can-pass-but-not-others ("pathing" problem)

It is also suggested that putting an access list on the door would be an elegant solution to the pocket lint problem but leave the pathing problem.

Either or both of these could be overcome eventually with Moore's Law, but anyway it is not what I am suggesting.

I am suggesting a container (chest seems the dwarfiest) that can be locked.  If adding a lock to an existing container is too complex to code well (and I suspect it is), the alternative is a new container such as a "lockbox."

The lockbox would be either (chest + mechanism) -> (lockbox + key) or (chest + lock&key) -> (lockbox + key).  I'm envisioning a lock&key item made at a mechanic's workshop like a mechanism but metal-only.

Placing an item into or removing an item from a lockbox requires the Dwarf to have a key (or lockpicking skill...).

A lockbox would mildly slow down a Kobold thief.  Mostly it would provide a dwarfier way of forbidding something.

7777777
7777777
77
+++77
77
+Æ+77
77
+++77
7777777
7777777

  ╞═╡


----
Hearth/Fireplace

http://www.bay12forums.com/smf/index.php?topic=46184.msg914907
http://www.bay12forums.com/smf/index.php?topic=69453.msg1680410

This is another idea that got kicked around a lot a few years ago, and it actually exists in some mods.  A hearth or fireplace would be a one-tile building/construction that can start a fire given a unit of wood or fuel.

The hearth should be able to cook Simple Meals, but in Fortress mode it mostly serves to raise the value of a dining room.  In Adverturer mode these things should be in residences and give the character access to fire should he/she need it.

In either mode, it'd be nice to have it affect the surrounding temperature.  Not recommended inside glaciers.





----
Secret Doors

www.bay12forums.com/smf/index.php?topic=27207.msg327671
www.bay12forums.com/smf/index.php?topic=121538.msg3942012


This is in essence just a regular door, but with the invisibility of a trap.

Option 1: Make it from a boulder for a "rough wall" look and from a block for a "smoothed wall" look.
Option 2: Force the player to plan ahead... secret doors can only be carved out of native stone.

If someone sees a Secret Door in use, he/she knows it is there... similar to how intelligent creatures avoid known traps. ("Speak friend and enter.")

It should not be possible to make a Secret Door that matches soil surroundings.  If secret doors can be built (rather than carved in-situ) then an option for a wooden secret door should exist as well.

Here is an example of a poorly-hidden secret door made of the wrong material, mostly so that those of you without TRAPAVOID tags can actually see it:


═════
+++++
═╦
╦═
 ║+║



----
Pit Trap

Although a pit trap can already be built with a retractible bridge and a pressure plate, this is just a compact one-tile version.  Should probably be remote-controllable by a typical trigger as well.

One neat feature would be to deactivate it (and thus not reveal its presence) if there is solid wall below it.  This only matters if the area below it is mobile (see below) or you plan to mine out soil tunnels really fast during a siege.

^

----
Mobile Walls

http://www.bay12forums.com/smf/index.php?topic=23799.msg263225

This is an idea that is definitely already on the table, so this more of an idea on how to do it.

I think the simplest method is to just glue blocks together using a Construction menu (choose to connect any combination of N/S/E/W/U/D) and leave them at the mercy of minecart physics.  Powered rollers would be the most reliable way to move things around.

This lets the community apply all of the minecart ‼SCIENCE‼ immediately to moving segments.  Would love to see the ability to join across z-levels and the ability to carve fortifications into moving segments.

The typical penalty for conflicting/invalid movements (deconstructing the whole damn thing) should keep this Fun.  Toady also needs to work out a character's reaction to having the ground move under him/her/it.

Here are two different methods for sliding a segment East and West:

     │
╞═■■■■╤╤╤═╡   
These rollers set to move EAST when powered
╞═■■■■╤╤╤═╡   These rollers set to move WEST when powered
     │

  │   │
╞■■╤╤╤╤╡     
Western 3 rollers move EAST when powered, Eastern 3 rollers move WEST when powered.


----
Worm Gear

Another way to get thing moving would be to use worm gears.  Since axles don't rotate in any particular direction right now, the mechanism at the end of the driving axle needs to designate a direction it moves across the worm gear sections.

The mass of the moving section (including its own axels and/or worm gears) figures into the power needed to move it.

This section of wall (with a fortification carved in the middle) will slide north to seal off an entryway.  The spin of the North-South axle is ignored by the mobile wall.


║         
Tracks


╬         
Mobile wall section


───     
Will move the assembly SOUTH when powered

───     
Will move the assembly NORTH when powered






──↔↔↔↔── 
What an East-West worm gear looks like.

   9     
What a vertical worm gear looks like.

A particularly Dwarfy use for vertical worm gears would be to lift a mobile section like an elevator.

Top view of the elevator.  The mobile section has an implied floor, upon which levers are placed to control which axle is moving the segment.  There is no need for these levers to be on the vehicle itself, but it might make the dwarves feel better to have the illusion of control.  Engaging both levers are the same time would lead to Fun.

To prevent the whole thing from pancaking on the ceiling when it reaches the top, use a segment of vertical axle at the top so it no longer provides power.  Ditto for the bottom segment of the down-driving gear.  Or you can put your trust in Urist McOperator's timing skills.  The choice is yours.

 Z+1

++++++
+++
ò9+
++++++
++++++
+
9ò+++
++++++


 Z+0

■■■■■■
■■■■
9
■■■■■■
■■■■■■
9■■■■
■■■■■■


Conveniently, ↕ nor ↔ nor 9 has any meaning in the game (other than the last showing up in text).

----
Dialog

I saw this on Ars Technica and thought that it might be worth looking at for ideas.  Of course this appeared after Toady did all that work on dialog and lying.

The research paper is a working paper from an Artificial Intelligence lab in Europe.  Ignoring the implementation details, the state-space concept is what I think would be useful for pulling dialog completely into game time.

I also think it'd be awe-inspiring if a character could be in more than one conversation simultaneously, such as the audience members of an announcement making snide comments to one another.  Or the shopkeeper's daughter running up and asking him for a biscuit.  Of course the in-world mothers with multiple children will hate Toady for this upgrade, but you can't please everyone.


----
Fonts

http://www.bay12forums.com/smf/index.php?topic=136332.0

Speaking of dialog, I'm also incorporating my previous suggestion on tilesets for text, just to keep everything in one place.

I apologize if this has been suggested before, but the keywords are just too common to search properly.

One of the upcoming features I read about was separating the font from the graphics tilesets, and that is a great idea.  I think Toady can go one step further and allow several fonts with very little additional effort.

The planned feature, as I understand it, would have something like text.png and graphics.png as two distinct tilesets.  Why not also allow for specific tilesets designated inside language files?  Then we could have a runic-looking Dwarf language tileset (font), a frilly Elf language tileset, a serif Human tileset and something ugly for the Goblin tileset (like Comic Sans).  Languages from mods can include their own fonts as desired, or pick one of the basic ones.  The vanilla version of the game just needs a single tileset to act as a fallback in case specific ones are missing.

14
DF Suggestions / Conditional raws
« on: February 20, 2014, 11:10:15 am »
I think this would be reasonably straightforward to implement, but I'd like to hear from the modders out there if this would actually be useful.

My idea is to include conditional tags inside the raws, basically giving the player a second page of options within world generation.

In the [WORLD_GEN] token one needs to call out each variable, its text for the worldgen screen, its default value and its possible values.

[PLAYER_CHOICE:GOOD_DWARVES:Dwarves settle in Good biomes:2:Yes:No]
[PLAYER_CHOICE:GOBLIN_AGGRESSION:Goblin aggression:3:Low:Medium:High:Fanatic]


The choices set up variables that can then be used later, with defaults of 2 and 3 respectively.  If the player chose "Yes" and "Fanatic" then GOOD_DWARVES would have a value of 1 and GOBLIN_AGGRESSION would have a value of 4.

Just before worldgen, while the raws are being copied into the new region's folder, they are processed in a SED-like manner to include or exclude tokens based on the variables.  For example:

[IF:GOBLIN_AGGRESSION:1:[PROGRESS_TRIGGER_POPULATION:5]]
[IF:GOBLIN_AGGRESSION:2:[PROGRESS_TRIGGER_POPULATION:4]]
[IF:GOBLIN_AGGRESSION:3:[PROGRESS_TRIGGER_POPULATION:3]]
[IF:GOBLIN_AGGRESSION:4:[PROGRESS_TRIGGER_POPULATION:2]]


If the condition is met, the process strips off the wrapper and processes it again in case of nested IFs, eventually leaving a tag.  If the condition is not met, the line is not copied over at all.  If DF allows repeated tags with last-in-wins, then this is even backwards compatible. Have an unconditioned tag first as a default and just expect a bunch of errors in the log.

A version that would break backwards compatibility and make raw processing a bit slower would be:

[IF_START:GOBLIN_AGGRESSION:1]
any number of tags, maybe changing the types of weapons or mounts available to Goblins
[IF_END]

These choices probably need to be very early in the [WORLD_GEN] token because conditional worldgen parameters would be a good use for this feature.  Or at least I think it'd be useful.

Do the modders out there think this would add value?

15
DF Suggestions / Presentation/Interface idea
« on: February 12, 2014, 05:00:46 pm »
I apologize if this has been suggested before, but the keywords are just too common to search properly.

One of the upcoming features I read about was separating the font from the graphics tilesets, and that is a great idea.  I think Toady can go one step further and allow several fonts with very little additional effort.

The planned feature, as I understand it, would have something like text.png and graphics.png as two distinct tilesets.  Why not also allow for specific tilesets designated inside language files?  Then we could have a runic-looking Dwarf language tileset (font), a frilly Elf language tileset, a serif Human tileset and something ugly for the Goblin tileset (like Comic Sans).  Languages from mods can include their own fonts as desired, or pick one of the basic ones.  The vanilla version of the game just needs a single tileset to act as a fallback in case specific ones are missing.

Pages: [1]