Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: DFHack - how to remove werebeast curse?  (Read 80 times)

asmoug

  • Escaped Lunatic
    • View Profile
DFHack - how to remove werebeast curse?
« on: February 12, 2019, 02:44:15 pm »

Hello all, I have a couple dorfs infected with a werebeast curse, and I was wondering if I could remove the curse with DFHack without having to kill them.

I've been trying a couple of things so far, but unsuccesfully:

  • show-unit-syndromes
This one can show the infected units, so supposedly the werebeast curse can be treated as a syndrome(?), and they show up like this:
Code: [Select]
sibrek mosusmor
- Mystery [permanent]
-  - Transformation [permanent] Weregoat

  • printing all syndromes

This is where it starts to get confusing, because I've then tried to print all syndromes (as I wasn't sure of what the syndrome name was) with this inline script (via ":lua"):
Code: [Select]
    for _,syn in ipairs(df.global.world.raws.syndromes.all) do
        print(syn.syn_name)
    end

and well, there does not seem to be such thing as a werebeast syndrome... I get lots of inebriation, titan sickness, lots of different sicknesses, but no werebeast (or mistery or weregoat or wereanything).

  • first attempt to remove the syndrome with syndrome-util

looking through the list of syndromes in df.syndrome.xml I've found a "BODY_TRANSFORMATION" syndrome, so I tried with
Code: [Select]
for _, unit in ipairs(df.global.world.units.active) do
    if dfhack.units.isCitizen(unit) then
        synutil.eraseSyndromes(unit, "BODY_TRANSFORMATION")
    end
end
but again, no change.

  • add-syndrome

last thing I tried is the add-syndrome script. I've found the dorf ID with cprobe, then tried "add-syndrome  -target <ID> -erase -syndrome <many different attempts were made to fill this space>" but it keeps saying the syndrome name is invalid.

Help?
Logged

Atomic Chicken

  • Bay Watcher
    • View Profile
Re: DFHack - how to remove werebeast curse?
« Reply #1 on: February 16, 2019, 01:35:22 pm »

Werebeast syndromes are generated without a name, but they all come with the "WERECURSE" SYN_CLASS token. The solution is therefore very simple:
Code: [Select]
modtools/add-syndrome -eraseClass WERECURSE -target <ID>(Replace <ID> with the unit ID of your target).
Logged
Viva la Undergrowth!  Viva la revolution!