I'm still a beginner when it comes to domain driven design, and I am trying to model something like an RPG's battle system as a bounded context. I am trying to model a bounded context in which a Combatant has a list of abilities, and each Ability has a list of effects that it would apply. For example, a common Effect would be to deal damage to the target Combatant.
As far as I can tell, the two aggregate roots would be Combatant and Ability, with Effect being a value object.
Now, I am not certain where I should be putting my logic for the interaction between Combatants. In particular, I will need logic that handles the execution of an ability taking into account the source Combatant and the target Combatant. Likewise, I will need similar logic for the individual effects of an ability. Since the action and effects are being caused by one instance of a Combatant and are targeting a second instance of Combatant, I don't think the logic should be done within the Combatant aggregate itself.
The problem is that I just don't know where the logic should go. I initially thought a domain service would be the right spot, but after researching them, I think I may have been wrong. Does anyone have any insight as to where I should be putting this logic?