kw / camp

Larp Campaign Manager
MIT License
0 stars 1 forks source link

Artisan: Sequence grants (Good Timing, Hunter Gatherer, and Tanner) #99

Closed kw closed 1 year ago

kw commented 1 year ago

Artisan has three utilities (Good Timing, Hunter Gatherer, and Tanner) that grant the "next rank of" Prospecting, Foraging, or Scavenging, ignoring level requirements.

Prospect I, II, and III are separate skills, and no other feature has this "grant next in a sequence" concept. If something normally grants Prospect I, you either get Prospect I or you get a refund you can apply to Prospect II or Prospect III (if you qualify). Instead, the algorithm that appears to be required for this to function is roughly:

  1. On purchase, determine the highest level of the sequence that is currently purchased or granted.
  2. Determine the next level, record it in the model, and apply it. The recorded level is the one granted as long as the utility is possessed.

This works fine, but isn't user friendly. A common use case is that someone picks one of these utilities (say, Good Timing) as a starting utility to get their first rank or Prospect, and later would like to hit Prospect III before level 10. While there are several user journeys possible to get there, the one that seems like it would be required by this algorithm is:

  1. Use a free or purchased power swap to remove Good Timing.
  2. Buy the previously-granted skill level.
  3. Take Good Timing again, resetting it to grant the next level.

A more complex arrangement might be to allow skills to be "purchased" even though a grant is in place, and use some trickery to allow the sequence-grant powers to detect if the sequence is fulfilled without their help, applying the benefit to the next-highest rung in the ladder. This might work with the blackboard system I'm currently considering to replace the current evaluator, but is probably too complex for the current evaluator to handle.

For now, the implementation I'll use will instead be:

  1. Good Timing grants Prospect I only. If you already have it, you get the refund and can apply it to one of the higher ranks.
  2. But how do you get Prospect III before level 10? Add Good Timing as an alternate requirement that can take the place of the level 10 requirement.

This is much simpler, but since it works slightly differently than the text, the mechanic will be noted in the CMA version of the description.

I do not have the bandwidth to work on the blackboard system right now just for this feature, so this is what we'll go with until further notice.