Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Make a pet creature-type available to elves, for trade.  (Read 1559 times)

Walkaboutout

  • Bay Watcher
    • View Profile
Make a pet creature-type available to elves, for trade.
« on: January 10, 2022, 02:58:34 pm »

So, TL:DR. How do I make a custom creature available for trade via elven caravans, preferably without them appearing in the wild? If they have to appear as wild creatures, how can they be made very rare? What creature/entity tokens would be necessary?

The long version. If there are other ways to achieve my goals here, please feel free to suggest.

I'm tired of not being able to tame megabeasts properly in forts anymore. It occurred to me that I might be able to get around that by splitting the relevant megabeasts into two variants in the raw files; a "wild" variant, which would be the original megabeast with a different name, and a non-wild variant that is available via domestic animal lists, or preferably exotic animals (via elven caravan trade).

Take Hydras as an example. The normal Hydra megabeast would remain; I would just append "wild" to its name in the world. I would create a new Hydra variant, without the "wild", and this creature...well that's the question here.

It goes without saying that, if I make this creature available as a tamed creature that either the dwarves or the elves have access to, that its price would be absolutely enormous, in order to make its acquisition difficult. Thats easy enough. Now, I know that once you bought a breeding pair, it would be easy to trade them for entire caravans-worth of stuff, but I'm more than happy to impose rules on my own behavior as a player. Alternatively I can simply make it impossible for them to breed or have young.

So, in the case of making this example non-megabeast-token-Hydra available to elves as something that they would trade in a caravan, what tokens am I going to need on the creature, and even on elves as an entity (entity_default changes)?

I guess the rub here is that I'd like to accomplish that, but never see these guys in the wild (I know they'd appear in towns, but oh well), but I know that may not even be possible to do in the first place.

So, thoughts? Suggestions? Ideas? If there is some other way to get an analogue to megabeasts available for taming, without the bugs associated with megabeasts, I'd love to hear your idea on how to accomplish it.
Logged

Mobbstar

  • Bay Watcher
  • aka Mossbird
    • View Profile
    • my website
Re: Make a pet creature-type available to elves, for trade.
« Reply #1 on: January 10, 2022, 06:08:51 pm »

Civilisations can explicitly receive livestock in their "Entity" definition, via the ANIMAL tokens.  Kobolds use this to acquire snakes and similar creatures, but you can also set a specific ANIMAL_TOKEN as clarified on the wiki.

Most changes to Entities require a newly generated world, but you probably expected that anyways.

Remove the MEGABEAST token from your creature, or else it will attack your militia even if tamed.

Keep in mind that elves have no wagons.  A single pack animal will have to drag the entire cage and its heavy contents along.  That will slow them down significantly.

Keep in mind that civilisations can and will use war-trainable livestock in battles and warfare.  They likely won't have many specimen of the creature, since it doesn't appear in the wild, but it will still significantly skew history.

I wonder if it is possible to mod a reaction that lets you "craft" a tame hydra using a captured wild one.  Somebody probably already knows how to do it if it is possible at all.

Walkaboutout

  • Bay Watcher
    • View Profile
Re: Make a pet creature-type available to elves, for trade.
« Reply #2 on: January 10, 2022, 11:00:31 pm »

Thanks Mobb, those are some good points. I didn't know that about the entity taking a specific type of livestock, that's really good info for me.

I hadn't considered the weight of the megabeast sized monsters on a caravan though, you're absolutely right about that, LOL. I'll have to ponder that some. I usually make the elves a little more Tolkienesque anyways, so it wouldn't bother me too much if I had to set them up for wagons.

As to an alternate method using a "craft" reaction of some sort...hmm. I like that idea, I really do. I'll have to mess around a little and see if I can't make something work there. That might be a good way of doing things, and certainly feel a bit more organic, in terms of the normal order of things in Dwarf Fortress, when it comes to the megabeasts.
Logged

FantasticDorf

  • Bay Watcher
    • View Profile
Re: Make a pet creature-type available to elves, for trade.
« Reply #3 on: January 12, 2022, 08:27:31 am »

The use of [PET_EXOTIC] for a creature in a animal arguement allows them to be imported when combined with [ANIMAL_ALWAYS_PRESENT] if you need accessibility or a gurantee, otherwise it'll just whitelist it when in applicable biomes. However all examples of these will be nonhistoric compared to the animals/peopleanimals you start with, which may have historical relevance (depending on whether they're intelligent or pets)

Etc.

Code: [Select]
[ENTITY:FOREST] // obviously fill in the rest of the details, this example is in abstract.
[ANIMAL]                        //[ANIMAL] has to be re-entered when you start a new arguement rather than stringing them all in.
[CREATURE_TOKEN:PRISONER_OF_WAR] //example intellgent animal
[ANIMAL_ALWAYS_PRESENT]
[ANIMAL_NEVER_PET]
[ANIMAL_ALWAYS_SIEGE]
[ANIMAL_NEVER_MOUNT]
[ANIMAL_NEVER_WAGON_PULLER]
[ANIMAL_NEVER_PACK_ANIMAL]
Civilisations can explicitly receive livestock in their "Entity" definition, via the ANIMAL tokens.  Kobolds use this to acquire snakes and similar creatures, but you can also set a specific ANIMAL_TOKEN as clarified on the wiki.

Most changes to Entities require a newly generated world, but you probably expected that anyways.

Keep in mind that elves have no wagons.  A single pack animal will have to drag the entire cage and its heavy contents along.  That will slow them down significantly.

Keep in mind that civilisations can and will use war-trainable livestock in battles and warfare.  They likely won't have many specimen of the creature, since it doesn't appear in the wild, but it will still significantly skew history.

You can disable it by turning off the creature specifically, [ANIMAL] entity tokens are a override for the AI and not the player. But being attacked on site might be more as you say, but they won't be applied offensively. Once upon a time i rigged up the entire vanilla DF raw file through creature variations to mass disable the use of giant war-animals as well as a few other edge cases, its a handy tip when not using  ANIMAL_CASTE_TOKEN to try and induce the intended effect.

The capacities for animal-carrying can also be raised, better trade relations supply more animals if in-game you offer plenty & of course you can just give them guranteed elephants or something similar so they have more robust animals to work with.

Quote
I wonder if it is possible to mod a reaction that lets you "craft" a tame hydra using a captured wild one.  Somebody probably already knows how to do it if it is possible at all.

Id probably lean towards DFhack conversion/created creatures for this kind of thing, it'd be like speeding the training process up. Making the end result a [PET]  and carefully curating the entity [ANIMAL] would make them domesticated full trained if there was any training progress left over from the semi 'wild hydra' and not really usable by other civs (hopefully). Or manifest the not-megabeast fresh from a interaction.

The actual megabeast vs military issue is a AI bug that can't be really modded around though by the way, your civ always regards invaders as enemies and it never gets took off.

Impartially though id advise against 'wild wild Hydra' if that's jarring to you, and try using some other synonyms.
Logged

Walkaboutout

  • Bay Watcher
    • View Profile
Re: Make a pet creature-type available to elves, for trade.
« Reply #4 on: January 12, 2022, 12:02:43 pm »

Absolutely beautiful FantasticDorf, that info literally provides every detail I was interested in for making this work completely, in terms of my original thought of adding a similar non-megabeast version of things like hydras, dragons, etc. I really can't thank you, and Mobbstar as well of course, enough!

On a side note that might be of interest, your example code snippet line of [CREATURE_TOKEN:PRISONER_OF_WAR], should actually be [ANIMAL_TOKEN:PRISONER_OF_WAR]. At least, in my case, where I'm adding this non-megabeast hydra example. Perhaps there's a use for CREATURE_TOKEN rather than ANIMAL_TOKEN, but I assume that was just a small mistake. Please correct me if I'm incorrect on this. Anyways, ANIMAL_TOKEN worked perfectly for me, making only the specified animal available.

I mention this for two reasons:

1) Anyone interested in this thread's info for their own use of course, and

2) Because initially I hadn't noticed it, and used CREATURE_TOKEN. This actually had a bizarre, but possibly desirable (depending on a person's goals) effect. It made every creature available to the test civilization when I tested it out, and this includes...well everything from procedural forgotten beasts to megabeasts, to night creatures. In this test scenario I had added it to the dwarves, just to see if my test hydra appeared in embark as a choosable (but far too expensive) animal, and what I saw instead was, as I mentioned, every creature (sapient or otherwise) in the world, including procedurals!

The use of [PET_EXOTIC] for a creature in a animal arguement allows them to be imported when combined with [ANIMAL_ALWAYS_PRESENT] if you need accessibility or a gurantee, otherwise it'll just whitelist it when in applicable biomes. However all examples of these will be nonhistoric compared to the animals/peopleanimals you start with, which may have historical relevance (depending on whether they're intelligent or pets)

Etc.

Code: [Select]
[ENTITY:FOREST] // obviously fill in the rest of the details, this example is in abstract.
[ANIMAL]                        //[ANIMAL] has to be re-entered when you start a new arguement rather than stringing them all in.
[CREATURE_TOKEN:PRISONER_OF_WAR] //example intellgent animal
[ANIMAL_ALWAYS_PRESENT]
[ANIMAL_NEVER_PET]
[ANIMAL_ALWAYS_SIEGE]
[ANIMAL_NEVER_MOUNT]
[ANIMAL_NEVER_WAGON_PULLER]
[ANIMAL_NEVER_PACK_ANIMAL]
Civilisations can explicitly receive livestock in their "Entity" definition, via the ANIMAL tokens.  Kobolds use this to acquire snakes and similar creatures, but you can also set a specific ANIMAL_TOKEN as clarified on the wiki.

Most changes to Entities require a newly generated world, but you probably expected that anyways.

Keep in mind that elves have no wagons.  A single pack animal will have to drag the entire cage and its heavy contents along.  That will slow them down significantly.

Keep in mind that civilisations can and will use war-trainable livestock in battles and warfare.  They likely won't have many specimen of the creature, since it doesn't appear in the wild, but it will still significantly skew history.

You can disable it by turning off the creature specifically, [ANIMAL] entity tokens are a override for the AI and not the player. But being attacked on site might be more as you say, but they won't be applied offensively. Once upon a time i rigged up the entire vanilla DF raw file through creature variations to mass disable the use of giant war-animals as well as a few other edge cases, its a handy tip when not using  ANIMAL_CASTE_TOKEN to try and induce the intended effect.

The capacities for animal-carrying can also be raised, better trade relations supply more animals if in-game you offer plenty & of course you can just give them guranteed elephants or something similar so they have more robust animals to work with.

Quote
I wonder if it is possible to mod a reaction that lets you "craft" a tame hydra using a captured wild one.  Somebody probably already knows how to do it if it is possible at all.

Id probably lean towards DFhack conversion/created creatures for this kind of thing, it'd be like speeding the training process up. Making the end result a [PET]  and carefully curating the entity [ANIMAL] would make them domesticated full trained if there was any training progress left over from the semi 'wild hydra' and not really usable by other civs (hopefully). Or manifest the not-megabeast fresh from a interaction.

The actual megabeast vs military issue is a AI bug that can't be really modded around though by the way, your civ always regards invaders as enemies and it never gets took off.

Impartially though id advise against 'wild wild Hydra' if that's jarring to you, and try using some other synonyms.
« Last Edit: January 12, 2022, 12:04:32 pm by Walkaboutout »
Logged

FantasticDorf

  • Bay Watcher
    • View Profile
Re: Make a pet creature-type available to elves, for trade.
« Reply #5 on: January 12, 2022, 01:33:32 pm »

Oh i just ad-libbed it without looking, that tends to happen a lot, thanks for correcting me. Yeah i think that's just caused by a faulty field, it should turn up in the errorlog.

There are some cases similarly where ANIMAL_TOKEN: replicates this effect but you can avoid it by making grounded lists of small sets of animals or individuals or closing the selection off with ANIMAL_FORBIDDEN_CLASS. Doesn't really even have to be creatures that are real, as long as its filled in (the [ANIMAL] entity tokens have the benefit of being able to pull creatures with [DOES_NOT_EXIST] similar to summoning that otherwise don't appear anywhere else without fancifulness image-making)

Logged

Walkaboutout

  • Bay Watcher
    • View Profile
Re: Make a pet creature-type available to elves, for trade.
« Reply #6 on: January 12, 2022, 02:23:12 pm »

Oh i just ad-libbed it without looking, that tends to happen a lot, thanks for correcting me. Yeah i think that's just caused by a faulty field, it should turn up in the errorlog.

There are some cases similarly where ANIMAL_TOKEN: replicates this effect but you can avoid it by making grounded lists of small sets of animals or individuals or closing the selection off with ANIMAL_FORBIDDEN_CLASS. Doesn't really even have to be creatures that are real, as long as its filled in (the [ANIMAL] entity tokens have the benefit of being able to pull creatures with [DOES_NOT_EXIST] similar to summoning that otherwise don't appear anywhere else without fancifulness image-making)

Damn, thanks again man, that's some great info. Like I said, can't thank you enough! Being able to pull "does not exist" creatures is really interesting, for specific scenarios.
Logged