Mods / Dame Elswyth’s Summons
- Tags:
- Author:
- Ghaelen
- Side:
- Server
- Created:
- 3 days ago
- Last modified:
- 1 day ago
- Downloads:
- 75
-
Recommended download (for Vintage Story 1.22.0 - 1.22.3):
dameelswythssummons-0.2.7.zip 1-click install
"Return of the Faithful Companion"
The night was black as pitch, and the storm brake upon the village as though the very heavens had split their seams. Rain lashed the thatch, wind worried at the shutters, and no honest soul had cause to wander abroad. The night belonged to drifters.
Yet one man did.
With trembling hand he struck upon the crooked door of a lonely hut at the wood’s edge. After a long while, it opened.
Within was warmth, and firelight, and the thick mingled savour of herbs, roots, smoke, and other things no plain man could rightly name. A black cauldron muttered over the hearth. From beam and wall hung nettle, yarrow, foxglove, thyme, and stranger plants besides, all drying in the ruddy glow.
Before a cluttered shelf of cracked books and stoppered bottles stood Dame Elswyth Crowle, whom some called healer, and some called witch, though none called her aught within her hearing save “good dame.”
The man stumbled in, rain streaming from his cloak, tears streaming from his red and swollen eyes. Without a word he set before her a linen sack, heavy with the payment agreed.
Dame Elswyth opened it, peered within, and gave a smile without mirth.
“Thou hast brought the price,” quoth she. “Hast thou brought the bond?”
The man’s lips shook. From within his jerkin he drew a little lock of burned fur and charred flesh, tied with thread, and laid it in her waiting palm.
“He was no coward,” the man whispered. “Nor taken by wolf, nor bear, nor drifter. Nay… the poor fool walked mindlessly into a pit kiln, as though called by the flame itself, and burned to death before I could reach him.”
Dame Elswyth said nothing. She only closed her fingers about the fur, then turned from him and went unto the mark drawn upon the floor in ash and ochre, five-pointed and ringed about with signs no priest had taught. She placed the fur at its heart, lifted both her hands, and began to chant in a tongue older than the village, older than the road, mayhap older than men’s remembering.
The man could scarce see for weeping. The fire guttered. The cauldron hissed. The hanging herbs stirred though no wind touched them.
Then, in the midst of the sign, a shadow gathered.
It bent, and shivered, and took upon itself the shape of a beast.
A bark split the room.
The man fell to his knees.
There, hale and whole, with tail beating joy against the floor, stood his lost hound. The creature sprang upon him with glad cries, licking the salt from his cheeks, as though it had been gone but a moment and not swallowed by the dark beyond all finding.
Dame Elswyth turned back toward her cauldron.
“See that thou losest him not again,” said she.
But the man heard her not, for his arms were about his faithful friend, and the storm outside no longer seemed so cruel.
Description
This mod introduces two new mechanics.
Finding Lost and Irretrievable Pets
Finding Pets
If a tamed, semi-tamed, or dead pet is lost, stuck, or no longer responding, start by checking pets in currently loaded chunks:
- /summons loaded [filter]
The optional [filter] can be a pet name such as Eastman, an entity id, or an entity code such as panserbjornrebjorn:tamedbear-adult-male. If the pet is not currently loaded, use this command to search saved chunks as well:
- /summons list [filter]
Retrieving Lost Pets
This scans the current world database, read-only, and may take a little while on heavily explored worlds. If either command finds the pet, it reports the entity id, loaded/saved status, and last known position. You can teleport the pet to your current position with:
- /summons tp <entityId|name>
Names are case-insensitive, but must match exactly, and work only when they uniquely match one of your pets. Spaces in names are OK, so you can teleport "Sir Fluff". If the pet is in an unloaded saved chunk, the mod queues that chunk column to load, then retries until the entity appears in loaded entities.
By default, commands only work on your own pets. Root users can inspect or teleport another player’s pets with:
- /summons list owner:<player>
- /summons tp <entityId|name> owner:<player>
If neither loaded nor list can find the pet, Dame Elswyth sends her condolences. Some souls are so far gone that even Dame Elswyth cannot touch them.
Enhancing Fire Avoidance AI
If you're like me, your pet always seems to walk right into fire.
Nerd Alert
The problem is that PetAI has an AiTaskAvoidFire, but it seems to be incomplete. It's registered, but not present in the entity's aitasks list, meaning that PetAI registers avoidfire, but many tame pets never actually get that task attached, so they keep following / attacking / wandering without any fire-avoidance behavior.
The second problem is that PetAI’s existing AiTaskAvoidFire only looks at nearby chunk BlockEntities and checks for BlockBehaviorHeatSource. But this completely misses hazards that are not represented as block entities, like ordinary fire / lava-style damaging blocks or other active hot blocks. So even when the task is registered, and present in the aitasks list, the hazard detection is too narrow.
This mod implements an always-present, high-priority avoidance task for PetAI tameables after their normal task AI initializes. This new task scans nearby blocks, detects active heat sources via BlockBehaviorHeatSource.GetHeatStrength(...), and also catches direct fire/lava/burning-style blocks by block code. When a hazard is close, it preempts the current movement slot and uses Vintage Story’s existing WaypointsTraverser.FleeFrom(...) to move the pet away.
I'm not entirely sure how to test this definitively other than to "live with it" for a while and rely on reports from people who use the mod. But even this isn't bullet-proof since even reports of "Hey, my tamed animal just died in a pit kiln" doesn't necessarily mean the AI task failed because SO many things can go wrong.
You Can Help
My fire avoidance code requires understanding the base game and PetAI mechanics on a deep level. It should help, but there's a lot of "paths" through the game mechanics of how entities move. You can help me make the code better by sending in fire avoidance log files. Fire avoidance debug logging can be enabled in two ways:
- Persistently, through
ModConfig/dameelswythssummons.json - Temporarily, through the root-only chat command
/summons firedebug
The config file is written by the server at ModConfig/dameelswythssummons.json. By default, fire avoidance logging is set to false.but you can set it to true if you want fire avoidance diagnostics to be enabled upon startup. If Config Lib is installed (completely optional - the mod doesn't require it), the same debug setting appears in its UI as a server-side option.
Root users can also start temporary diagnostics immediately from chat:
/summons firedebug status/summons firedebug on/summons firedebug on 15/summons firedebug dump/summons firedebug off
The "on" command starts runtime fire debug file logging immediately. If no duration is supplied, the session lasts 10 minutes to make sure the filesize doesn't grow too big (maximum duration is 60 minutes). Starting or extending a session dumps current active fire avoidance traces into the log file right away.
Runtime logs are written under ModData/dameelswythssummons/fire-debug/
The "dump" command writes current active fire avoidance traces. If a runtime session is active, the dump goes to the current session log. If no session is active, the command creates a one-shot dump file in the same folder.
Unintuitively, the "off" turns the runtime file logging session off.
When you have fire debug logs that describe my fire avoidance code failing, please send them to me on Discord. My username is caffeineNYC.
Dedication
This mod is dedicated to my dogs, Eastman Holderworth Caulfield III and Daisy, and my bear Bruno.
| Mod Version | Mod Identifier | For Game version | Downloads | Released | Changelog | Download | 1-click mod install* |
|---|---|---|---|---|---|---|---|
| 0.2.7 | dameelswythssummons | 29 | 1 day ago | dameelswythssummons-0.2.7.zip | 1-click install | ||
|
Permissions were too strict for the summon command, so I've relaxed them. The op can now find and summon other peoples' pets. You can summon your own pet based on name rather than entityID (if the name is unique). No more stupid random strings. You can enable and disable fire debug code with a console command instead of a config variable. | |||||||
| 0.2.0 | dameelswythssummons | 34 | 2 days ago | dameelswythssummons-0.2.0.zip | 1-click install | ||
|
Implemented the fire avoidance AI. I'm not entirely sure how to test this definitively other than to "live with it" for a while and rely on reports from people who use the mod. | |||||||
| 0.1.0 | petfinder | 12 | 3 days ago | petfinder-0.1.0.zip | 1-click install | ||
|
First release. I haven't tested this much, and I apologize for that. | |||||||

The writing for this mod's description is top notch. I an so glad the good dame was around to help that poor man and his pup reunite.
My humble thanks! I love writing and was wondering if anybody actually likes reading fan-made lore! You made my day!
Goated mod, helps loads
Many thanks! I threw this together quickly because I couldn't find my dog, and my son's wolf pop disappeared in our game. I'm still not 100% code the fire AI code completely works, but I'm working on it.
I think I'd like to implement teleporting based on name next so I don't have to keep writing out entityIDs.
Thanks very much for putting this together and solving two of the biggest issues with our pet friends. 🐶😺
The pain is real! My very first time playing this game, I managed to tame a bear and I was SO proud of myself. Until he kept walking right into pit kiln. BUMP! Walk forward. BUMP! Walk forward. BUMP! Ugh.
As for lost pets, it's a mystery. Sometimes it's my fault. I'll ask a pet to stay somewhere, but I swear sometimes the game loses track of pets as well.
If your pet walks into fire after installing this mod, I'd like to hear about it. The details - what kind of block, what kind of animal, etc. Testing this functionality is difficult, so I'm hoping to get input from you guys on the successes and especially the failures!
Yes, I had similar experiences. I was really interested to hear there is actually existing code in PetAI for fire avoidance, because in my experience, PetAI creatures are actually more attracted to fire than non-pet counterparts. In a large room, the cats always went right for the one block with a fire and cookpot on it. It was uncanny, and led to me building a kitchen that looked more like a prison just to keep the cats indoors and out of the fire. And all the pets either stay in my little house with me or have purpose-built areas for them since they would wander off into the night and never return. Don't get me wrong, I built my 3 digital dogs a really nice kennel including grass and outdoor space (and a lightning rod because VS LOVES murdering your animals with lightning), but they're still penned in so I don't lose them. They can now all roam free and fire-avoidant now! Thank you again!