New Content Everfull Dart Holster

Veracity

Developer
Staff member
Chris has committed a couple of PRs for initial support, but I think we still need a thread.

I've noticed that creatures have from 4 to 6 body parts. They may include "butt", if you've unlocked it, but even if unlocked, some creatures already have six parts and do not include it.

These seem to be the available "skills"

Code:
7513    Darts: Throw at %part1    nicedart.gif    combat    0    0
7514    Darts: Throw at %part2    nicedart.gif    combat    0    0
7515    Darts: Throw at %part3    nicedart.gif    combat    0    0
7516    Darts: Throw at %part4    nicedart.gif    combat    0    0
7517    Darts: Throw at %part5    nicedart.gif    combat    0    0
7518    Darts: Throw at %part6    nicedart.gif    combat    0    0
7519    Darts: Throw at %part7    nicedart.gif    combat    0    0
7520    Darts: Throw at %part8    nicedart.gif    combat    0    0
7521    Darts: Aim for the Bullseye    nicedart.gif    combat    0    0

I'm currently looking at a possessed wine rack.
The "dart board" has shelf, shelf, leg, and butt.
Stationary buttons offer

darts: aim for the bullseye
darts: throw at %part3
darts: throw at %part2
darts: throw at %part1

I think it would be nice if we parsed the dart board and set a property which maps %partX -> body part.
Perhaps a comma-separated list of body parts - shelf,leg,butt,,,,, - for %part1 ... %part8
Stationary Buttons would use that and be "aim for the bullseye", "throw at shelf", "throw at leg", and "throw at butt".
Scripts could read that and programmatically choose the appropriatete skill.
 
I believe the devs (cdmoyer) were talking about makin changes to how the item works, something involving a temporary fix that refreshes the page. I can't double check because the forums of loathing is showing an error page for me currently.

I had some issues trying to use the skills using combat macros which I mentioned in those forums. When I try to make an auto attack with throw at butt, it hits other body parts as well. That's what the text output in mafia was saying anyways. I think maybe the placement of body parts on the board changes from turn to turn.
 
I know that it changes. That’s why I think we can intervene and normalize it.

If there are going to be in game changes, we should probably wait. 😀
 
I had some issues trying to use the skills using combat macros which I mentioned in those forums. When I try to make an auto attack with throw at butt, it hits other body parts as well. That's what the text output in mafia was saying anyways. I think maybe the placement of body parts on the board changes from turn to turn.
It may change each round - or it may change per monster. Which is to say "%part1" may be this monster's butt, but another may have "%part2".

I finished the war today throwing at everybody's butts (for item drops).

Code:
[948] The Battlefield (Hippy Uniform)
Encounter: War Frat Elite 110th Captain
Round 0: Veracity wins initiative!
Round 1: You lose 1 hit point
Round 1: Veracity casts DARTS: THROW AT %PART4!
Round 2: War Frat Elite 110th Captain takes 449 damage.
Round 2: Veracity wins the fight!
...
[956] The Battlefield (Hippy Uniform)
Encounter: War Frat Elite 110th Captain
Round 0: Veracity wins initiative!
Round 1: You lose 1 hit point
Round 1: Veracity casts DARTS: THROW AT %PART3!
Round 2: War Frat Elite 110th Captain takes 400 damage.
Round 2: Veracity wins the fight!

Even with the same kind of foe, the same body part may have different skills. I don't know if it is per round or per combat. My fully upgraded darts are powerful enough to single shot monsters, at the moment.
 
KoL will make the translation for you if you submit a BALLS macro, so
Code:
"skill Darts: Throw at butt; "
becomes
Code:
Round 1: ckb1 casts DARTS: THROW AT %PART1!
 
So the number of slices on the board can change according to how many parts it has

Current hypothesis from what I have noticed so far:

Parts change position with the same monster across different rounds.

If you have multiples of the same part (two butts or two arms for example on the board) then they will be the same %PART number, as per text output in mafia.

If the board has only 4 items then the parts seem to be numbered starting on the top right moving clockwise.

So for example if I am looking at a tomb bat that reads from top right moving clockwise as: wing, head, wing butt
Then the targets in terms of the part numbers reading from top right moving clockwise will be: part1, part2, part1, part3

On a 6 piece "black crayon beast" that starts with tail at the top, and reads: tail, head, leg, body, butt, body

I aimed for the first body: part%4 then leg: part%3 head: part%2
Then I ran out of darts.
I believe the top is part%1 in a 6 grid, but the counting isn't simply clockwise as it is with a 4 grid.
 
KoL will make the translation for you if you submit a BALLS macro, so
Code:
"skill Darts: Throw at butt; "
becomes
Code:
Round 1: ckb1 casts DARTS: THROW AT %PART1!
This does in fact work. It seemed like it was throwing at random parts a few days ago when reading the output in mafia, but I downloaded the most recent version of mafia and instead of saying a specific body part it says the %part, which corresponds to the butt on the grid. (counting clockwise on the tomb bats which I am still fighting)

Is it possible to use BALLS macros within the mafia CCS?
 
r27861 has:

Code:
> get _currentDartboard

7513:torso,7514:head,7515:butt,7516:arm,7517:leg 

> ash dart_skills_to_parts() 
Returned: aggregate string [skill]
Darts: Throw at %part1 => torso
Darts: Throw at %part2 => head
Darts: Throw at %part3 => butt
Darts: Throw at %part4 => arm
Darts: Throw at %part5 => leg

> ash dart_parts_to_skills()
Returned: aggregate skill [string]
arm => Darts: Throw at %part4
butt => Darts: Throw at %part3
head => Darts: Throw at %part2
leg => Darts: Throw at %part5 
torso => Darts: Throw at %part1
 
Bug encountered during Ed fight. Once I hit 196 darts thrown (which happened during the 3rd turn of the fight for me), Mafia thought it was going to encounter a choice after the turn but didn't because Ed, causing it to loop without continuing to the next phase of combat. Restarting Mafia allowed me to continue the fight. On the 4th turn of the fight, I used another dart. Same thing happened. Restarted Mafia and finished the fight using Saucegeysers. I didn't need to restart because the darts counter didn't increment.
 
OK, after perusing the page you referenced I think I am starting to get the idea with regards to macros.

I was thinking that "using the BALLS macro" in css would be making a macro inside of vanilla KOL and then referencing the macro (by what you named it) inside of mafia. It seems like that is not the case, but rather we can issue a macro on the fly from css, that isn't saved in vanilla KOL in the macros section.

That is to say we simply add macros in the ccs itself using the BALLS scripting rules. In fact I just tried it, so yes that's how it works, which is super useful to know, but doesn't solve the problem of being able to use the "skill Darts: Throw at butt" because it still isn't available in the ccs (saving changes it to "note unknown/ambiguous skill Darts: Throw at butt") as of r27864

Maybe the last comment by Veracity suggests that there is a way to find out which %part is the butt now??
 
Last edited:
For any of my fellow scripting midwits wondering if we need to understand what a BALLS macro is or anything: We don't; we can just download the latest Mafia and do what ckb says above. The custom combat script you want is something like:
Code:
[ default ]
special action
"skill Darts: Throw at butt; "
attack with weapon
Thank you, knowledgeable Mafia people. 🙏
 
For any of my fellow scripting midwits wondering if we need to understand what a BALLS macro is or anything: We don't; we can just download the latest Mafia and do what ckb says above. The custom combat script you want is something like:
Code:
[ default ]
special action
"skill Darts: Throw at butt; "
attack with weapon
Thank you, knowledgeable Mafia people. 🙏
This works. You need to include the quotation marks. I don't understand why we need quotes in this case and we don't need them for aim for the bullseye for example but it works.
 
Back
Top