public Task ScavengerJoin(ILobbyObserver lobbyObserver, IScavengerObserver scavengerObserver) { Subscribe(lobbyObserver); _scavengerObserver = scavengerObserver; var scavengerGrain = GrainFactory.GetGrain <IScavengerGrain>(Guid.NewGuid()); _lobby.AddScavenger(scavengerGrain.GetPrimaryKey()); Console.WriteLine($"Scavenger {_lobby.ScavengerId} joined Lobby { this.GetPrimaryKey()}"); if (_lobby.IsWaitingForGuide) { var lobbyManagerGrain = GrainFactory.GetGrain <ILobbyManagerGrain>(0); lobbyManagerGrain.AddLobbyWaitingForGuide(this.GetPrimaryKey()); } return(TaskDone.Done); }