I see what you mean.
In [Game events](https://github.com/ggirou/risk/wiki/Game-events), I mixed player events and server events.
Maybe we have to explicitly distinct player event and server event with different classes.
- Player events are only sent by players.
- Player events are transformed to zero or many ServerEvents by the engine.
- Server events represent a change in the game state.
- Server events are broadcasted to update game state on each player client

But we can avoid this method in our cases:
The `Attack` event is always sent by the player and never broadcasted, but the result of the Battle is broadcasted.
The `Attack` event is "transformed" to a `BattleEnded` event.
We can remove the Defend event because we said that the maximum armies are automatically engaged in the battle.

For fortification, in `onMove`, `EndTurn` must not be broadcasted, it's a player event, but `sendNextPlayer` must be call.