Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Turn/round/scene events and active effect durations #199

Open
Element-Re opened this issue Jan 12, 2025 · 3 comments · Fixed by #215
Open

Turn/round/scene events and active effect durations #199

Element-Re opened this issue Jan 12, 2025 · 3 comments · Fixed by #215
Assignees

Comments

@Element-Re
Copy link

Element-Re commented Jan 12, 2025

The EffectDurationData currently available for project FU are part of the default ActiveEffect schema and do not fully capture the kinds of durations actually used in Fabula Ultima — in particular, FU generally does not use numeric durations, and instead tends to rely on effects ending on a particular event. In particular, these are the most common:

  • The start of a creature's next turn
  • The end of a creature's next turn
  • The end of the current round
  • The end of the current scene

Additional Notes:

  • In all the official examples I can find, turn events always occur on the turn of the creature that is source of the ability, but if possible I think there would be value in having the option of them occuring on the target's turn instead. This might be considered too homebrew though.
  • Each of the above events is also sometimes just used for ability triggers without a duration or for things like re-enabling an effect that was temporarily disabled (example: flying), so I think there's a lot of value in adding them as hook events for the system as well for macro and module authors to utilize.
  • The end of a scene should probably end all end of round and end of turn effects on participating actors.
    image
  • For the first three, it might be possible combine these with the default numeric round/turn fields — example, an effect with a 3 turn numeric duration and a "start of turn" duration type could possibly end at the start of the creature's third turn after it was applied. This is definitely homebrew territory though—Fabula as written seems to explicitly eschew numeric durations. I would at least suggest needing to explicitly opt in for this behavior.
  • A conflict ending should probably count as the end of a scene for the sake of effect durations, but not all scenes are conflicts so there should also be a way to manually trigger then end of a scene.
  • Some people may like the option of a conflict starting to count as the end of a scene as well, but this should be configurable or have a confirmation prompt—sometimes a scene-length effect might be applied as a conflict is being set up and hasn't officially started that you don't want to immediately end.
@Element-Re Element-Re changed the title Turn/round events and active effect durations Turn/round/scene events and active effect durations Jan 12, 2025
@Shourn
Copy link
Collaborator

Shourn commented Jan 12, 2025

All good suggestions and I'm all in favor of adding them.
I have actually been thinking about how to do this for quite a long time.
Sadly it basically requires a complete rewrite of the current combat system.
Right now we have what could be described as a checklist; Whenever a combatant finishes their turn a box gets ticked.

For proper duration tracking we'd need a system where a combatant can "claim" a turn (triggering start of turn logic) before being able to end their turn (thus triggering end of turn logic).
One of the big hurdles to achieve this is that Foundry is very restrictive about what non-GMs can change in a Combat document.
Without a way for players to reliably update the combat state the whole system devolves into either tracking combat state on the Combatants or using socket messages to have a GM track combat state on behalf of the players.
Both of these solutions are error prone and/or pose usability challenges.

This is not meant to dissuade you from finding a solution, I just think that as of Foundry V12 there is no way to achieve proper Fabula Ultima turn tracking without "hacks".
As such I personally have opted to spend my time parts of the system with a higher ROI so to speak.

Also: The saboteur role in the quick assembly rules preview has effects that last until the targets next turn, so there's semi-official precedent for those.

@Azurelol
Copy link
Collaborator

I think we can begin by targeting a subset of events to start with:

  • End of turn (actor)
  • End of round
  • End of conflict

For each of these events we could invoke predefined hooks that others can subscribe to. Then provide baseline functionality for managing effects such as for example function to iterate over an actor's active effects that have been set to temporary and provide a prompt to remove them as a chat message.

@Azurelol Azurelol self-assigned this Jan 29, 2025
@Azurelol
Copy link
Collaborator

Azurelol commented Feb 3, 2025

Some inspiration for their definition:

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants