I haven't really been playing much at all recently, but figured I'd stop being lazy and strip down my target tracker/limb counter to release. I'm not charging for it, I'll just stick the link below and if people want to try it out they're more than welcome to do so. It's probablydefinitely not the nicest code in the world, there was probably a better way to achieve some of the things I wanted to achieve, but it works (for me, it's possible I missed a bug or two in the fresh profile I tried it on).
https://www.dropbox.com/s/dfirlxnva6x2ww1/antonius-targetting.zipWhat does it do?
- Tracks for multiple targets.
Each target is essentially an object (I think the correct Lua term is a dictionary?) with a number of properties. It tracks their name, the number of individual slashes necessary to break, then the actual counts for each of their limbs: head, torso, left leg, right leg, left arm, right arm. It also tracks - via the in-game targetting and the SETTARGET command (plus a trigger) - whether or not the target is an adventurer; I use this for determining whether I want to add venoms to the doubleslash syntax on my attack alias.
- Rough estimates from limb probe (Sawbones trait).
This currently only works one way. If you think you haven't hit their limb at all, and limb probe says it's "Heavily damaged", it's going to adjust the current count for that limb upwards to roughly the percentage I think that term corresponds to (it's around 80% from my testing). Similarly, if it says "Heavily damaged" and the number of hits is non-zero but below 80%, it will also adjust the count upwards. However, if you think you've got it fully prepped, and it says "Lightly damaged", it won't adjust down. The one exception to this is "Perfect health", which will set the count back to 0.
- Three second warnings after the last salve application
Will tell you when three seconds has passed since the person last applied, and what they applied the salve to. Doesn't have any checks on it, and isn't limited to your current target. It will pick up literally every application that you see (I will probably change this at some point).
- Resets the count for a limb four seconds after a salve is applied to the necessary bodypart, and only if the counter thinks you've actually broken one of those limbs.
So if they apply restoration to their legs, and you think their left leg is broken, four seconds after that application the count for their left leg will reset to 0. If, however, they apply to their legs before it thinks
- Integrates with Svo's custom prompt
It sets up a couple of custom prompt tags that you can use if you want to. The most important one is @limbhits
which will provide a colour-coded readout of the current status of their bodyparts plus the number it takes to actually break. White means it's not prepped, orange means it's prepped (two hits/one doubleslash away from break), red means it's broken. The order is left leg/right leg/left arm/right arm/head/torso - if you want a different order there's a function called antonius.targetting.prompt_hits which you'll need to modify.
- Colour codes prepped/broken attack messages.
Much the same as the Svo custom prompt, the attack line is coloured orange when the limb is prepped, red for an attack that actually breaks it. I'm not entirely sure how that's going to work if you already have colours applied to those messages (I don't, personally).What doesn't it do?
- Estimate number of hits to break for you.
The trigger for ASSESS is there, it just always sets the number of hits to 10. I have a formula that works for (unruned) Soulpiercers about 99% of the time, but I haven't included that. You'll need to get a formula from somewhere else, or do your own testing, to determine those values for you based on your own weapons.
- Have anti-illusion
This is probably the biggest drawback. I had an idea of how I'd implement it, but I never got around to it since it would be a fairly big structural change to the way the entire thing works. Maybe when I start playing again, maybe I'll throw out another release of this at some point that includes this. Absolutely no promises.
- Handle any other attacks.
Strictly your own (double)slashes with regular rapiers (change the trigger lines if you have customised weapons). It won't recognise weapon attacks from another person, it won't recognise any other attack that deals limb damage.Aliases
lleg/ll - sets the currently targetted bodypart (antonius.targetting.bodypart) to "left leg"
rleg/rl - sets the currently targetted bodypart (antonius.targetting.bodypart) to "right leg"
larm/la - sets the currently targetted bodypart (antonius.targetting.bodypart) to "left arm"
rarm/ra - sets the currently targetted bodypart (antonius.targetting.bodypart) to "right arm"
head/h - sets the currently targetted bodypart (antonius.targetting.bodypart) to "head"
torso/t - sets the currently targetted bodypart (antonius.targetting.bodypart) to "torso"
nothing - sets the currently targetted bodypart (antonius.targetting.bodypart) to "nothing" (untargetted attacks)
hits <number> - manually overrides the number of hits to break a limb of the current target
hit [limb ]<number> - manually sets the number of hits on the currently targetted limb (if not specified) or the limb specified. Example usage: hit 10
- sets the number of hits on the currently targetted bodypart to 10 for the current target; hit lleg 10
- sets the number of hits for the left leg of the current target to 10.
reset [limb] - resets the count for the specified limb or the currently targetted limb. Example usage: reset
- resets the count for the currently targetted limb; reset lleg
- resets the count for the left leg of the current target
limbreset - resets the count for every limb of the current target
lp [name] - limbprobes either the current target or the person specifiedWhat do you need to do?
Add a call to the antonius.targetting.target
function to your current targetting alias. Should look something like this: antonius.targetting.target(matches). If you use a variable called 'target' currently, that function will also set that for you so you could replace the 'target = matches' line with the function call
rather than having both.
to your Svo custom prompt if you want to, otherwise set up some other way to display the state of your current target. If you want to use the counts elsewhere, the variables to use would be antonius.target["head"], antonius.target["torso"], antonius.target["left arm"], etc. Then antonius.target.hits for the actual number to break.Comments/Questions/Feedback/Praise/Abuse
Send me a message on the forums with anything like that. I'm happy to try to resolve any issues people are having, consider requests for changes/improvements/additions, etc.