6150th poster gets a cookie (cookie thread (Part 7)) (Part 8)

apparently this isn’t supposed to be out yet lol

guess u got it early

2 Likes

this is maybe the realest post you’ve ever made

1 Like

Ever heard of Linear Action Resolution? It’s what I used before I realized LAR was not NAR.

Example (Low Number = Higher Priority):

  • Roleblocker (No. 1) blocks Doctor (No. 4)
  • Jailkeeper (No. 2) jails Roleblocker (No. 1)
  • Bus Driver (No. 3) swaps Roleblocker (No. 1) and Redirector (No. 5)
  • Doctor (No. 4) heals Roleblocker (No. 1)
  • Redirector (No. 5) redirects Bus Driver (No. 3) to Doctor (No. 4) || Since Bus Driver has two targets, assume only the first target gets redirected

LAR (Sequential):

  1. Roleblocker blocks Doctor
  2. Jailkeeper visits Roleblocker || Block does nothing since the action was already done
  3. Bus Driver swaps Roleblocker and Redirector
  4. Doctor wanted to heal Roleblocker, but got blocked
  5. Redirector “redirects” Bus Driver to Doctor || Assume this is the type of Redirector that visits both targets || Bus Driver visited (1) Roleblocker, (2) Redirector, and (3) Doctor. They swapped (1) and (2), and simply visited (3) without doing anything.

NAR (Priority is given to those who are the least affected by other roles):

  1. Redirector redirects Bus Swapper’s first target to Doctor
  2. Bus Driver swaps Doctor and Redirector
  3. Jailkeeper jails Roleblocker
  4. Doctor heals Roleblocker
  5. Roleblocker got blocked
2 Likes

yeah it’s not intended as permanent

at the moment you’re (well, atm I’m) not supposed to put in roles where that’s an issue

Actually I’m pretty sure this is.

The solution… IIRC differs per host:

I’ve pondered the idea of partial roleblocks and redirects, where the effects of an action are partially cancelled out or partially redirected, respectively

there are too many actions that don’t work at all with that though, so I didn’t put it into Zugbot
it’d make an interesting setup idea though

In the system I have slowly been working on (actually figuring out the algorithms to detect this has been hellish), the shot would fail because the natural chain would be RBer of Empowerer, Empowerer, RBer of Vigi, Vigi. (It’s not really a chain, but an RBer targeting another player goes before the player they’re targeting unless their target somehow affects the RBer, and an Empowerer similarly would go before their target, but the specific arrangement is irrelevant as long as those specific orderings are satisfied.)

Again, the detection algorithms are extremely complicated and potentially computationally expensive, so it’s a problem I pick up with and tinker around on for a bit before setting it back down. I think you’d need to construct graphs for scopes of influence, create a cycle detection algorithm for those graphs, and ways of breaking cycles that aren’t straight up deleting all of the problematic actions in the cycle which also asks a lot of questions. And when you start asking how abilities that trigger during resolution affect things timing wise that complicates things further, and then there are a lot of actions where it may not become clear to a program that things are potentially problematic until they’re partially resolved so it may require literally running resolution simulations or something. The point is it’s hard.

2 Likes

IE

Player A is a Jailkeeper, and Player B is a Roleblocker and a Vig.

Player A Jailkeeps Player B, and Player B shoots Player C. Also, Player B is attacked by the factional that night.

Player A and Player B both get half-roleblocked, so Player A’s protection of Player B is only half as effective, and player B’s vig shot does half the damage.

So, Player B and C end the night at half health (assuming everyone started at full health).

Yeah I want my action resolution to not give a shit about slot order, alignment, or time stamp and be deterministic. Also the atomic unit is not actions, but effects i.e. a conventional JK action is the composition of protection and blocking effects. Tiebreaking when there’s a cycle looks at the maximum intrinsic effect priority of each ability involved, and their scope (which just means what exactly the ability is affecting with generally narrower scopes winning out over larger ones). That sounds complicated, but it’s just a attempted formalization of NAR.

3 Likes

it’s a simple resolution that works for misc conflicting abilities i think? assuming you can’t find a better one which you generally can, it’s a good default
conflicting redirections absolutely should be cancelled tho

1 Like

for coding

1 Like

I think I would resolve this as:
Doctor (No. 4) heals themself.
Roleblocker (No. 1) gets jailed.

Roleblocker (No. 1) gets told their action failed. Everyone else gets told that their action succeeded.

with most abilities you should generally be able to find a better resolution tho

1 Like

oh damn have you been like, thinking about coding that kind of thing?

2 Likes

whyd u become an aussie at the end there

3 Likes

alr guys im gonna write the wandering souls OP wish me luck

general cw (i am treating a serious topic kinda lightly)

a second muer has hit the afterlife

2 Likes

I’ve personally referred to it as Chain Resolution.
The way I’ve tried approaching it is like a linked list, where you keep working backwards through a chain of “that person was targeted by this person, who was targeted by this person” until you find the earliest person not targeted by what I’d dub an “action-affecting effect” (RB, bus drive, etc). From there, you resolve things.

1 Like

Yes. On and off for years lol. Like sometimes I don’t think about it for months, but I do think about it and I’ve made some progress. So much of mafia game rules is just kinda fiat and not formalized that it makes writing the code for how I want it to work really difficult because it forces me to consider all of these questions. And I want it to be generalizable so I really have to decide how things work and interact with each other.

1 Like