@Endarei
A Pern mod will never be complete until Dwarves can ride a
Mount like invaders can. I did make
that suggestion in the Eternal Suggestion Voting thread. Maybe one day...
@Endarei
I think I could get you fairly close to the bonding mechanism through interactions (though it would have some problems such as either a dwarf would be able to stop multiple dragons, even those it hadn't bonded with, from suiciding).
I was working on a reply when i2amroy beat me to it and I had to rewrite. And his answers were knowledgeable and clever. However, I do have some suggestions of my own that might solve some issues.
The sexual orientation thing is out the window though, simply because right now dwarves only have two orientations, "male" and "female". You could limit the "Bond" interaction by gender though.
Correct me if I'm wrong, but couldn't you modify vanilla dwarves to give them multiple castes - like how the
Genesis mod used to - but have
one caste with
out [MALE] or [FEMALE]? Wouldn't that be like having hetero dwarves (male and female who marry and reproduce) and non-hetero dwarves (genderless who do not)? If you can target an interaction for MALE or FEMALE, then I would imagine you can target for certain castes of dwarves. Obviously, that's a very poor simulation because they're technically genderless. I only mention it as a workaround for game limitations.
Unless I made it some alterverse Pern... [snip] the Dragon/human relationship and dragon names would be, so far as I'm aware, impossible with the game's mechanics.
How to make newly hatched dragons die unless they "bond" right away:An
extremely simple solution might be to give them a rather high GRAZER value, meaning they will normally starve to death. But once a pet has an owner that owner will take care of it, preventing starvation. (See
this talk on the wiki.)
However, this
assumes that baby animals graze on grass to some degree. Nothing I found on the wiki confirms or denies this. And players I've asked did not know and could only offer a guess. It seems !science! is needed: Someone needs to pen a baby in an area without grass and see if it starves.
Would it be possible to make their ability to breathe fire dependent on consumption of a specific item? I haven't bothered trying yet because it didn't look feasible, but I don't know much about the Interactions yet.
Totally possible. Just have a food item that temporarily allows dragons to use the material breath interaction. It would be incredibly difficult to get the dragons to eat it though, and anybody else could eat it as well for food.
Couldn't it also work by making the dragons grazers and mod or create a type of grass, cave moss, or floor fungus defined in the raws with a
plant material containing a SYN_INGESTED syndrome that will
only affect Pern dragons that graze on it?
If so, like i2amroy's idea, you'd still need
two versions of your Pern dragons, one that does
not have fire breath and one that
does and have a syndrome to transform into the latter.
A likely issue with depending on a particular grass, though, is the probability that said grass will appear at your embark location or in a given biome. (Which could be adjusted via raws. You might even give this syndrome to multiple grasses or delete several vanilla grasses.) Or, instead, you could give this trait to a cave moss or floor fungus.
On having a dragon adopt a specific human/dwarf and being telepathically bonded:The dragon is the one who chooses the human to bond with, correct? Then perhaps you should use the [ADOPTS_OWNER] tag, making them similar to
cats in how they adopt dwarves? You could keep prospective dwarves (or playable humans) near the dragon (assigned to a pen or chained?) until the dragon adopts one of them. (No cages, though, as they prevent cats from adopting.)
If you are not averse to a bit of scripting in Lua or C++ for DFHack, a custom script could open up a
lot more possibilities:
In the DFHack thread Quietust
confirmed here that it is possible change a dwarf's likes/preferences. As such, a script could target dwarves that match certain criteria and give them a preference to like a particular color of Pern dragon.
Then it would be
much more likely for such a dragon to bond with him/her. I'm basing this claim on
the fact that cats "have a much higher probability of choosing a dwarf who has the 'admires cats for their aloofness' preference."
DFHack has a lot of scripting potential that could be used for a mod. For instance, the
zone.cpp tool can help manage animals in interesting new ways and allows one to filter by male, female, tamed, named, egglayer, grazer, unassigned, age, minage, maxage, trained, trainablewar, and trainablehunt, among other things. (See "const string zone_help_filters" for details.) With the "race" you can even filter by species, such as BIRD_TURKEY. As such, you could, let's say, filter to tell the script to do something to a DRAGON_BLUE that is either newly hatched or a certain age, trained or not, etc.
Also, a script can detect whether a dwarf has a spouse or lover. The setOwner function in
Buildings.cpp uses relations.spouse_id to find a spouse. And I was
just informed that "If lover_id isn't set to -1, then the creature has a lover." I'm suggesting you could use this to match a particular color of dragons (using ADOPTS_OWNER) with male or female dwarves that are married, lovers, or single by changing that dwarf's preference for certain dragon colors. And, as mentioned earlier, if you mod dwarves to have separate castes to simulate some non-hetero dwarves, you could even target those by filtering for those which are neither MALE nor FEMALE.
You'd probably want to also give your Pern dragons [TRAINABLE] (equivalent to
TRAINABLE_HUNTING and
TRAINABLE_WAR). Question: Those tags normally allow it to be assigned to a specific dwarf, but [ADOPTS_OWNER] prevents this. Does that mean [ADOPTS_OWNER] would prevent those tags from working?
Anyway, when a cat adopts a dwarf it follows them around and gives the owner a happy thought. That's
sort of like bonding. But
Animal trainer "bonding" could take that up a notch:
As animal trainers work with an animal, they may become bonded to it ("formed a bond with an animal training partner"), and this relationship is visible in the dwarf's relationships screen... [snip]... The death of a bonded animal results in a bad thought for the trainer ("has lost an animal training partner to tragedy"), whose exact severity is unknown but fairly significant.
Again, this assumes [TRAINABLE] still works with [ADOPTS_OWNER]. But, depending on the severity of that bad thought from the loss and possible accumulation of other bad thoughts, it's
possible for this to trigger the trainer/owner to tantrum or go insane.