G1R AngelScript
Scripting reference for the Gothic 1 Remake
Loading...
Searching...
No Matches
UGameplayAbilitySmalltalk Class Reference

Smalltalk control ability. More...

Public Member Functions

Functions
bool HasAnyoneBeenSpeakingRecently (float32 Seconds) const
 Returns true if someone was telling any smalltalk sentence within the last couple seconds. (Including this character).
FGameplayTag ChooseNextSmalltalkTopic () const
 Returns a tag for the next topic to talk about (might be the same as last sentence).
TMap< FGameplayTag, float32 > GatherOngoingTopicsAndWeights () const
 Looks around for other people doing smalltalks and checks what they were talking about. Returns a map of Topic -> Random Weight.
AGothicCharacter GetAvatarCharacter () const
 Owning character.
UGenericVoicelineComponent GetAvatarVoicelines () const
 Access to the characters GenericVoicelineComponent.
TSet< AGothicCharacter > GetOtherSmalltalkParticipants () const
 Find other characters who are also doing smalltalk with us right now.
AGothicCharacter GetRandomOtherSmalltalkParticipant () const
 Get a random smalltalk participant that is not us.
bool CanSayAnySentenceNow () const
 Whether this character is currently allowed to say anything. It could be forbidden because someone else is not finished talking, for example.
bool IsAnyOtherParticipantCurrentlySpeaking () const
 Returns true if one of the other smalltalk participant is speaking right now.
bool IsHoldingMonolog () const
 Returns true if the character said the recent sentences in a row.
bool IsSpeakingRightNow () const
 Returns true if this character is speaking right now.
bool SayRandomSentence ()
 Lets the character say a random sentence, trying to match the topic. Returns true if a sentence was said.
bool TrySaySentence (FVoicelineAssignment Voiceline)
 Lets the character say this sentence. Returns false, if this wasn't possible.
Public Member Functions inherited from UGameplayAbilityBase
bool Getm_bCanEverTick () const
void TriggerEndOn (const FGameplayTag Tag)
 To be called in the constructor. Cancels this ability when an event with the given GameplayTag fires.
bool Getm_ActivateAbilityOnGranted () const
void Setm_ActivateAbilityOnGranted (bool Value)
bool Getm_TickEnabled () const
void Setm_TickEnabled (bool Value)
void TriggerBeginOn (const FGameplayTag Tag, EGameplayAbilityTriggerSource TriggerSource=EGameplayAbilityTriggerSource ::GameplayEvent)
 To be called in the constructor. Lets this ability start when an event with the given GameplayTag fires.
void Setm_bCanEverTick (bool Value)
bool Getm_FinishOnInputReleased () const
void Setm_FinishOnInputReleased (bool Value)
bool Getm_OnlyPlayer () const
void Setm_OnlyPlayer (bool Value)
Public Member Functions inherited from UGameplayAbility
UObject GetSourceObject (FGameplayAbilitySpecHandle Handle, FGameplayAbilityActorInfo ActorInfo) const
void MontageJumpToSection (FName SectionName)
 Immediately jumps the active montage to a section.
void MontageStop (float32 OverrideBlendOutTime=- 1.000000)
 Stops the current animation montage.
void MontageSetNextSectionName (FName FromSectionName, FName ToSectionName)
 Sets pending section on active montage.
UAnimMontage GetCurrentMontage () const
 Returns the currently playing montage for this ability, if any.
TArray< FActiveGameplayEffectHandle > ApplyGameplayEffectSpecToTarget (const FGameplayEffectSpecHandle EffectSpecHandle, FGameplayAbilityTargetDataHandle TargetData)
 Apply a previously created gameplay effect spec to a target.
TArray< FActiveGameplayEffectHandle > ApplyGameplayEffectToTarget (FGameplayAbilityTargetDataHandle TargetData, TSubclassOf< UGameplayEffect > GameplayEffectClass, int GameplayEffectLevel=1, int Stacks=1)
 Apply a gameplay effect to a Target.
void RemoveGameplayEffectFromOwnerWithAssetTags (FGameplayTagContainer WithAssetTags, int StacksToRemove=- 1)
 Removes GameplayEffects from owner which match the given asset level tags.
void RemoveGameplayEffectFromOwnerWithGrantedTags (FGameplayTagContainer WithGrantedTags, int StacksToRemove=- 1)
 Removes GameplayEffects from owner which grant the given tags.
void RemoveGameplayEffectFromOwnerWithHandle (FActiveGameplayEffectHandle Handle, int StacksToRemove=- 1)
 Removes GameplayEffect from owner that match the given handle.
void CancelTaskByInstanceName (FName InstanceName)
 Add any task with this instance name to a list to be canceled (not ended) next frame. See also EndTaskByInstanceName.
void ConfirmTaskByInstanceName (FName InstanceName, bool bEndTask)
 Finds all currently active tasks named InstanceName and confirms them. What this means depends on the individual task. By default, this does nothing other than ending if bEndTask is true.
void EndAbilityState (FName OptionalStateNameToEnd)
 Ends any active ability state task with the given name. If name is 'None' all active states will be ended (in an arbitrary order).
void EndTaskByInstanceName (FName InstanceName)
 Add any task with this instance name to a list to be ended (not canceled) next frame. See also CancelTaskByInstanceName.
int GetAbilityLevel () const
 Returns current level of the Ability.
int GetAbilityLevel_BP (FGameplayAbilitySpecHandle Handle, FGameplayAbilityActorInfo ActorInfo) const
 Returns current ability level for non instanced abilities. You must call this version in these contexts!
UAbilitySystemComponent GetAbilitySystemComponentFromActorInfo () const
 Returns the AbilitySystemComponent that is activating this ability.
FGameplayAbilityActorInfo GetActorInfo () const
 Returns the actor info associated with this ability, has cached pointers to useful objects.
AActor GetAvatarActorFromActorInfo () const
 Returns the physical actor that is executing this ability. May be null.
FGameplayEffectContextHandle GetContextFromOwner (FGameplayAbilityTargetDataHandle OptionalTargetData) const
 Generates a GameplayEffectContextHandle from our owner and an optional TargetData.
float32 GetCooldownTimeRemaining () const
 Returns the time in seconds remaining on the currently active cooldown.
void CommitExecute ()
 BP event called from CommitAbility.
UObject GetCurrentSourceObject () const
 Retrieves the SourceObject associated with this ability. Can only be called on instanced abilities.
FGameplayEffectContextHandle GetGrantedByEffectContext () const
 Retrieves the EffectContext of the GameplayEffect that granted this ability. Can only be called on instanced abilities.
AActor GetOwningActorFromActorInfo () const
 Returns the actor that owns this ability, which may not have a physical location.
USkeletalMeshComponent GetOwningComponentFromActorInfo () const
 Convenience method for abilities to get skeletal mesh component - useful for aiming abilities.
UObject GetSourceObject_BP (FGameplayAbilitySpecHandle Handle, FGameplayAbilityActorInfo ActorInfo) const
 Retrieves the SourceObject associated with this ability. Callable on non instanced.
void InvalidateClientPredictionKey () const
 Invalidates the current prediction key. This should be used in cases where there is a valid prediction window, but the server is doing logic that only it can do, and afterwards performs an action that the client could predict (had the client been able to run the server-only code prior). This returns instantly and has no other side effects other than clearing the current prediction key.
bool IsLocallyControlled () const
 True if the owning actor is locally controlled, true in single player.
void ActivateAbility ()
 The main function that defines what an ability does. -Child classes will want to override this -This function graph should call CommitAbility -This function graph should call EndAbility.
void ActivateAbilityFromEvent (FGameplayEventData EventData)
void AddGameplayCue (FGameplayTag GameplayCueTag, FGameplayEffectContextHandle Context, bool bRemoveOnAbilityEnd=true)
 Adds a persistent gameplay cue to the ability owner. Optionally will remove if ability ends.
void AddGameplayCueWithParams (FGameplayTag GameplayCueTag, FGameplayCueParameters GameplayCueParameter, bool bRemoveOnAbilityEnd=true)
 Adds a persistent gameplay cue to the ability owner. Optionally will remove if ability ends.
FActiveGameplayEffectHandle ApplyGameplayEffectSpecToOwner (const FGameplayEffectSpecHandle EffectSpecHandle)
 Apply a previously created gameplay effect spec to the owner of this ability.
FActiveGameplayEffectHandle ApplyGameplayEffectToOwner (TSubclassOf< UGameplayEffect > GameplayEffectClass, int GameplayEffectLevel=1, int Stacks=1)
 Apply a gameplay effect to the owner of this ability.
bool CanActivateAbility (FGameplayAbilityActorInfo ActorInfo, const FGameplayAbilitySpecHandle Handle, FGameplayTagContainer &RelevantTags) const
 Returns true if this ability can be activated right now. Has no side effects.
void CancelAbility ()
 Call from Blueprint to cancel the ability naturally.
bool CheckAbilityCooldown ()
 Checks the ability's cooldown, but does not apply it.
bool CheckAbilityCost ()
 Checks the ability's cost, but does not apply it.
bool CommitAbility ()
 Attempts to commit the ability (spend resources, etc). This our last chance to fail. Child classes that override ActivateAbility must call this themselves!
bool CommitAbilityCooldown (bool BroadcastCommitEvent=false, bool ForceCooldown=false)
 Attempts to commit the ability's cooldown only. If BroadcastCommitEvent is true, it will broadcast the commit event that tasks like WaitAbilityCommit are listening for.
bool CommitAbilityCost (bool BroadcastCommitEvent=false)
 Attempts to commit the ability's cost only. If BroadcastCommitEvent is true, it will broadcast the commit event that tasks like WaitAbilityCommit are listening for.
FGameplayAbilityTargetingLocationInfo MakeTargetLocationInfoFromOwnerActor ()
 Creates a target location from where the owner avatar is.
void EndAbility ()
 Call from blueprints to forcibly end the ability without canceling it. This will replicate the end ability to the client or server which can interrupt tasks.
void EndAbilityLocally ()
 Call from blueprints to end the ability naturally. This will only end predicted abilities locally, allowing it end naturally on the client or server.
void ExecuteGameplayCue (FGameplayTag GameplayCueTag, FGameplayEffectContextHandle Context)
 Invoke a gameplay cue on the ability owner.
void ExecuteGameplayCueWithParams (FGameplayTag GameplayCueTag, FGameplayCueParameters GameplayCueParameters)
 Invoke a gameplay cue on the ability owner, with extra parameters.
bool HasAuthority () const
void OnEndAbility (bool bWasCancelled)
 Blueprint event, will be called if an ability ends normally or abnormally.
void RemoveGameplayCue (FGameplayTag GameplayCueTag)
 Removes a persistent gameplay cue from the ability owner.
bool ShouldAbilityRespondToEvent (FGameplayAbilityActorInfo ActorInfo, FGameplayEventData Payload) const
 Returns true if this ability can be activated right now. Has no side effects.
FGameplayEffectSpecHandle MakeOutgoingGameplayEffectSpec (TSubclassOf< UGameplayEffect > GameplayEffectClass, float32 Level=1.000000) const
 Convenience method for abilities to get outgoing gameplay effect specs (for example, to pass on to projectiles to apply to whoever they hit).
void RemoveGrantedByEffect ()
 Removes the GameplayEffect that granted this ability. Can only be called on instanced abilities.
FGameplayAbilityTargetingLocationInfo MakeTargetLocationInfoFromOwnerSkeletalMeshComponent (FName SocketName)
 Creates a target location from a socket on the owner avatar's skeletal mesh.
void SendGameplayEvent (FGameplayTag EventTag, FGameplayEventData Payload)
 Sends a gameplay event, also creates a prediction window.
void SetCanBeCanceled (bool bCanBeCanceled)
 Sets whether the ability should ignore cancel requests. Only valid on instanced abilities.
void SetShouldBlockOtherAbilities (bool bShouldBlockAbilities)
 Sets rather ability block flags are enabled or disabled. Only valid on instanced abilities.
Public Member Functions inherited from UObject
bool MarkPackageDirty () const
void RemoveFromRoot ()
bool GetIsRooted () const
bool IsTransient () const
bool Modify (bool bAlwaysMarkDirty=true)
void SetTransactional (bool bTransactional)
bool IsSupportedForNetworking () const
UClass GetClass () const
UObject GetOuter () const
UObject GetTypedOuter (TSubclassOf< UObject > Target) const
 Traverses the outer chain searching for the next object of a certain type.
UPackage GetOutermost () const
UPackage GetPackage () const
void AddToRoot ()
UWorld GetWorld () const
FName GetName () const
FString GetFullName (const UObject StopOuter=nullptr) const
FString GetPathName (const UObject StopOuter=nullptr) const
bool IsA (const UClass Class) const
 Returns true if this object is of the specified type, or a child of that type.
void SaveConfig ()
void LoadConfig ()
void ReloadConfig ()
void CopyScriptPropertiesFrom (const UObject OtherObject)
void opCast (?&Address) const
FString ToString () const

Static Public Member Functions

Static Functions
static UClass StaticClass ()
Static Public Member Functions inherited from UGameplayAbilityBase
static UClass StaticClass ()
Static Public Member Functions inherited from UGameplayAbility
static UClass StaticClass ()
Static Public Member Functions inherited from UObject
static UClass StaticClass ()

Public Attributes

GameplayAbilitySmalltalk
float32 MaxSmalltalkPartnerDistance
 How far another person can be away from us to still be considered for smalltalking.
float32 MinSecondsBetweenSentences
 How much time needs to pass between the last person saying something and a new sentence.
float32 SecondsBetweenSentencesVariance
 Random variance of MinSecondsBetweenSentences.
float32 SecondsCooldownAfterFailedCheckTimerSetup
 When trying to set up Timers for the next Smalltalk Check while a participant is still speaking, wait this many seconds to try again.
TArray< ERelationship > RequiredRelationship
 Relationship we have to have with others to be able to do smalltalk with them.
FGameplayTagContainer AvailableSmalltalkTopics
FGameplayTagContainer BlockSmalltalkForOwnedTags
 If the character has one of these tags, it won't do smalltalk.
FGameplayTagContainer AllowSmalltalkForOwnedTags
 If the character has one of these tags, it is allowed to do smalltalk (If it's not blocked).
EPerceptionNoiseLoudness TalkLoudness
 Loudnes value that defines the maximum distance someone can hear the smalltalk.
FGameplayTag GreetingVoicelineTag
 Voiceline to use for saying "hello" at the start of the conversation.
float32 CurrentTopicMultiplicator
 Values that multiplicates with the weight of the current topic and Subtopic. This should cause the characters to stick with one topic for a couple of sentences.
float32 CurrentSubtopicMultiplicator
float32 SubTopicImportance
int MonologLimit
 Maximum Amount of Voicelines the Character can talk in a row.
float32 MaxTopicAge
 Maximum age for topics to get a higher weight when the next topic is choosen.
Variables
const UGenericVoicelineComponent AvatarVoicelines
 Access to the characters GenericVoicelineComponent.
const TSet< AGothicCharacter > OtherSmalltalkParticipants
 Find other characters who are also doing smalltalk with us right now.
const AGothicCharacter RandomOtherSmalltalkParticipant
 Get a random smalltalk participant that is not us.
const AGothicCharacter AvatarCharacter
 Owning character.
Public Attributes inherited from UGameplayAbilityBase
FGameplayTagContainer m_AssetPreloadContext
 Tags to include in AssetPreload context.
int m_MaxActiveCount
 How often can this ability be activated on an actor (in parallel).
int m_LoadAssetsPriority
Public Attributes inherited from UGameplayAbility
bool bServerRespectsRemoteAbilityCancellation
 If this is set, the server-side version of the ability can be canceled by the client-side version. The client-side version can always be canceled by the server.
EGameplayAbilityNetExecutionPolicy NetExecutionPolicy
 How does an ability execute on the network. Does a client "ask and predict", "ask and wait", "don't ask (just do it)".
EGameplayAbilityReplicationPolicy ReplicationPolicy
 How an ability replicates state/events to everyone on the network. Replication is not required for NetExecutionPolicy.
bool bRetriggerInstancedAbility
 if true, and trying to activate an already active instanced ability, end it and re-trigger it.
EGameplayAbilityNetSecurityPolicy NetSecurityPolicy
 What protections does this ability have? Should the client be allowed to request changes to the execution of the ability?
EGameplayAbilityInstancingPolicy InstancingPolicy
 How the ability is instanced when executed. This limits what an ability can do in its implementation.
TSubclassOf< UGameplayEffect > CooldownGameplayEffectClass
 This GameplayEffect represents the cooldown. It will be applied when the ability is committed and the ability cannot be used again until it is expired.
TSubclassOf< UGameplayEffect > CostGameplayEffectClass
 This GameplayEffect represents the cost (mana, stamina, etc) of the ability. It will be applied when the ability is committed.
bool bReplicateInputDirectly
 If true, this ability will always replicate input press/release events to the server.
FGameplayTagContainer SourceRequiredTags
 This ability can only be activated if the source actor/component has all of these tags.
FGameplayTagContainer SourceBlockedTags
 This ability is blocked if the source actor/component has any of these tags.
FGameplayTagContainer TargetRequiredTags
 This ability can only be activated if the target actor/component has all of these tags.
FGameplayTagContainer TargetBlockedTags
 This ability is blocked if the target actor/component has any of these tags.
FGameplayTagContainer CancelAbilitiesWithTag
 Abilities with these tags are cancelled when this ability is executed.
FGameplayTagContainer AbilityTags
 This ability has these tags.
FGameplayTagContainer ActivationBlockedTags
 This ability is blocked if the activating actor/component has any of these tags.
FGameplayTagContainer BlockAbilitiesWithTag
 Abilities with these tags are blocked while this ability is active.
FGameplayTagContainer ActivationOwnedTags
 Tags to apply to activating owner while this ability is active. These are replicated if ReplicateActivationOwnedTags is enabled in AbilitySystemGlobals.
FGameplayTagContainer ActivationRequiredTags
 This ability can only be activated if the activating actor/component has all of these tags.
TArray< FAbilityTriggerData > AbilityTriggers
 Triggers to determine if this ability should execute in response to an event.
const UAnimMontage CurrentMontage
 Active montage being played by this ability.
const UObject CurrentSourceObject
 Retrieves the SourceObject associated with this ability. Can only be called on instanced abilities.
const AActor OwningActorFromActorInfo
 Returns the actor that owns this ability, which may not have a physical location.
const FGameplayEffectContextHandle GrantedByEffectContext
 Retrieves the EffectContext of the GameplayEffect that granted this ability. Can only be called on instanced abilities.
FGameplayEventData CurrentEventData
 Information specific to this instance of the ability, if it was activated by an event.
const FGameplayAbilityActorInfo ActorInfo
 Returns the actor info associated with this ability, has cached pointers to useful objects.
bool bMarkPendingKillOnAbilityEnd
const UAbilitySystemComponent AbilitySystemComponentFromActorInfo
 Returns the AbilitySystemComponent that is activating this ability.
const float32 CooldownTimeRemaining
 Returns the time in seconds remaining on the currently active cooldown.
const USkeletalMeshComponent OwningComponentFromActorInfo
 Convenience method for abilities to get skeletal mesh component - useful for aiming abilities.
const int AbilityLevel
 Returns current level of the Ability.
const AActor AvatarActorFromActorInfo
 Returns the physical actor that is executing this ability. May be null.
FGameplayAbilityActivationInfo CurrentActivationInfo
 This is information specific to this instance of the ability. E.g, whether it is predicting, authoring, confirmed, etc.
Public Attributes inherited from UObject
const UClass Class
const UObject Outer
const UPackage Outermost
const UPackage Package
const UWorld World
const FName Name
const bool IsRooted

Detailed Description

Smalltalk control ability.

Flow of how smalltalk works:

  1. First character arrives at their Smalltalk-Spot and starts this SmalltalkAbility.
  2. The Ability waits for other smalltalk participants to arrive. While doing so, the daily routine AIState is responsible of playing "waiting animations" on the character if needed. This Ability is only responsible for doing voicelines.
  3. After someone arrives, saying smalltalk sentences is unlocked. In random intervals, they will talk to eachother.

Member Function Documentation

◆ CanSayAnySentenceNow()

bool CanSayAnySentenceNow ( ) const

Whether this character is currently allowed to say anything. It could be forbidden because someone else is not finished talking, for example.

◆ ChooseNextSmalltalkTopic()

FGameplayTag ChooseNextSmalltalkTopic ( ) const

Returns a tag for the next topic to talk about (might be the same as last sentence).

◆ GatherOngoingTopicsAndWeights()

TMap< FGameplayTag, float32 > GatherOngoingTopicsAndWeights ( ) const

Looks around for other people doing smalltalks and checks what they were talking about. Returns a map of Topic -> Random Weight.

◆ GetAvatarCharacter()

AGothicCharacter GetAvatarCharacter ( ) const

Owning character.

◆ GetAvatarVoicelines()

UGenericVoicelineComponent GetAvatarVoicelines ( ) const

Access to the characters GenericVoicelineComponent.

◆ GetOtherSmalltalkParticipants()

TSet< AGothicCharacter > GetOtherSmalltalkParticipants ( ) const

Find other characters who are also doing smalltalk with us right now.

◆ GetRandomOtherSmalltalkParticipant()

AGothicCharacter GetRandomOtherSmalltalkParticipant ( ) const

Get a random smalltalk participant that is not us.

◆ HasAnyoneBeenSpeakingRecently()

bool HasAnyoneBeenSpeakingRecently ( float32 Seconds) const

Returns true if someone was telling any smalltalk sentence within the last couple seconds. (Including this character).

◆ IsAnyOtherParticipantCurrentlySpeaking()

bool IsAnyOtherParticipantCurrentlySpeaking ( ) const

Returns true if one of the other smalltalk participant is speaking right now.

◆ IsHoldingMonolog()

bool IsHoldingMonolog ( ) const

Returns true if the character said the recent sentences in a row.

◆ IsSpeakingRightNow()

bool IsSpeakingRightNow ( ) const

Returns true if this character is speaking right now.

◆ SayRandomSentence()

bool SayRandomSentence ( )

Lets the character say a random sentence, trying to match the topic. Returns true if a sentence was said.

◆ StaticClass()

UClass StaticClass ( )
static

◆ TrySaySentence()

bool TrySaySentence ( FVoicelineAssignment Voiceline)

Lets the character say this sentence. Returns false, if this wasn't possible.

Member Data Documentation

◆ AllowSmalltalkForOwnedTags

FGameplayTagContainer AllowSmalltalkForOwnedTags

If the character has one of these tags, it is allowed to do smalltalk (If it's not blocked).

◆ AvailableSmalltalkTopics

FGameplayTagContainer AvailableSmalltalkTopics

◆ AvatarCharacter

const AGothicCharacter AvatarCharacter

Owning character.

◆ AvatarVoicelines

const UGenericVoicelineComponent AvatarVoicelines

Access to the characters GenericVoicelineComponent.

◆ BlockSmalltalkForOwnedTags

FGameplayTagContainer BlockSmalltalkForOwnedTags

If the character has one of these tags, it won't do smalltalk.

◆ CurrentSubtopicMultiplicator

float32 CurrentSubtopicMultiplicator

◆ CurrentTopicMultiplicator

float32 CurrentTopicMultiplicator

Values that multiplicates with the weight of the current topic and Subtopic. This should cause the characters to stick with one topic for a couple of sentences.

◆ GreetingVoicelineTag

FGameplayTag GreetingVoicelineTag

Voiceline to use for saying "hello" at the start of the conversation.

◆ MaxSmalltalkPartnerDistance

float32 MaxSmalltalkPartnerDistance

How far another person can be away from us to still be considered for smalltalking.

◆ MaxTopicAge

float32 MaxTopicAge

Maximum age for topics to get a higher weight when the next topic is choosen.

◆ MinSecondsBetweenSentences

float32 MinSecondsBetweenSentences

How much time needs to pass between the last person saying something and a new sentence.

◆ MonologLimit

int MonologLimit

Maximum Amount of Voicelines the Character can talk in a row.

◆ OtherSmalltalkParticipants

const TSet<AGothicCharacter> OtherSmalltalkParticipants

Find other characters who are also doing smalltalk with us right now.

◆ RandomOtherSmalltalkParticipant

const AGothicCharacter RandomOtherSmalltalkParticipant

Get a random smalltalk participant that is not us.

◆ RequiredRelationship

TArray<ERelationship> RequiredRelationship

Relationship we have to have with others to be able to do smalltalk with them.

◆ SecondsBetweenSentencesVariance

float32 SecondsBetweenSentencesVariance

Random variance of MinSecondsBetweenSentences.

◆ SecondsCooldownAfterFailedCheckTimerSetup

float32 SecondsCooldownAfterFailedCheckTimerSetup

When trying to set up Timers for the next Smalltalk Check while a participant is still speaking, wait this many seconds to try again.

◆ SubTopicImportance

float32 SubTopicImportance

◆ TalkLoudness

Loudnes value that defines the maximum distance someone can hear the smalltalk.