There is some overlap with another post here, but this topic is about ways in which turn based aspects can be handled in Gameplay Ability System.
So I’m trying to incorporate GAS into a prototype turn based style game, think X-COM. So, I’m currently trying to figure out how to do what is traditionally thought of as duration based actions like HOT, DOT, Cool-downs, and Buffs but in terms of turn based. There is
Has Duration Duration Policies in Gameplay Effects, but what is needed for a Turn based game is something like
Has Turns. For Example, Adding a Damage Over Time should inflict damage at the beginning of each turn for x turns, not every x seconds.
So there are a few different ways to think about this:
Gameplay Ability System wasn’t meant for turn based games and should be avoided. If so, then I’m going to use it anyways because literally everything else has benefit and it’s going to suck not being able to use duration/turn based effects.
Is there a way to extend GAS to have and honor a
Has Turnsduration policy? Has anyone done this?
Are there other ways to do turn based stuff within existing GAS infrastructure? For example, does it make sense to: a. Have duration based effects be
Indefinitebut somehow refreshed every turn for so many turns by some other GAS mechanic?
b. Or could I use a
Has Durationpolicy but with some Custom Calculation Class logic to accommodate it?
c. Or maybe go with a very frequent (100ms maybe)
Has Durationbut with logic wrapped in a DoOnce that gets reset every turn?
Or is this a forking situation? Or rather, turning off the plugin and porting the GAS code directly into project + replacing duration logic with turn logic.
Ideally a non-hacky solution would work best and I imagine I’m not the first person to run into this.