public Task GuideJoin(ILobbyObserver lobbyObserver, IGuideObserver guideObserver) { Subscribe(lobbyObserver); _guideObserver = guideObserver; var guideGrain = GrainFactory.GetGrain <IGuideGrain>(Guid.NewGuid()); _lobby.AddGuide(guideGrain.GetPrimaryKey()); Console.WriteLine($"Guide {_lobby.GuideId} joined Lobby { this.GetPrimaryKey()}"); if (_lobby.IsWaitingForScavenger) { var lobbyManagerGrain = GrainFactory.GetGrain <ILobbyManagerGrain>(0); lobbyManagerGrain.AddLobbyWaitingForScavenger(this.GetPrimaryKey()); } return(TaskDone.Done); }