88using Content . Server . Vocalization . Systems ;
99using Content . Shared . Animals . Components ;
1010using Content . Shared . Animals . Systems ;
11+ using Content . Shared . Backmen . Language ;
1112using Content . Shared . Database ;
1213using Content . Shared . Mobs . Systems ;
1314using Content . Shared . Speech ;
1415using Content . Shared . Speech . Components ;
1516using Content . Shared . Whitelist ;
1617using Robust . Shared . Network ;
18+ using Robust . Shared . Prototypes ;
1719using Robust . Shared . Random ;
1820using Robust . Shared . Timing ;
1921using Robust . Shared . Utility ;
@@ -63,15 +65,15 @@ private void ListenerOnMapInit(Entity<ParrotListenerComponent> entity, ref MapIn
6365 private void OnListen ( Entity < ParrotListenerComponent > entity , ref ListenEvent args )
6466 {
6567
66- TryLearn ( entity . Owner , args . Message , args . Source ) ;
68+ TryLearn ( entity . Owner , args . Message , args . Source , args . Language ? . ID ?? "Universal" ) ;
6769 }
6870
6971 private void OnHeadsetReceive ( Entity < ParrotListenerComponent > entity , ref HeadsetRadioReceiveRelayEvent args )
7072 {
7173 var message = args . RelayedEvent . Message ;
7274 var source = args . RelayedEvent . MessageSource ;
7375
74- TryLearn ( entity . Owner , message , source ) ;
76+ TryLearn ( entity . Owner , message , source , args . RelayedEvent . Language ? . ID ?? "Universal" ) ;
7577 }
7678
7779 /// <summary>
@@ -102,7 +104,8 @@ private void OnTryVocalize(Entity<ParrotMemoryComponent> entity, ref TryVocalize
102104 /// <param name="entity">Entity learning a new word</param>
103105 /// <param name="incomingMessage">Message to learn</param>
104106 /// <param name="source">Source EntityUid of the message</param>
105- public void TryLearn ( Entity < ParrotMemoryComponent ? , ParrotListenerComponent ? > entity , string incomingMessage , EntityUid source )
107+ /// <param name="lang"></param>
108+ public void TryLearn ( Entity < ParrotMemoryComponent ? , ParrotListenerComponent ? > entity , string incomingMessage , EntityUid source , ProtoId < LanguagePrototype > lang ) // backmen
106109 {
107110 if ( ! Resolve ( entity , ref entity . Comp1 , ref entity . Comp2 ) )
108111 return ;
@@ -142,7 +145,7 @@ public void TryLearn(Entity<ParrotMemoryComponent?, ParrotListenerComponent?> en
142145 return ;
143146
144147 // actually commit this message to memory
145- Learn ( ( entity , entity . Comp1 ) , message , source ) ;
148+ Learn ( ( entity , entity . Comp1 ) , message , source , lang ) ;
146149 }
147150
148151 /// <summary>
@@ -151,7 +154,8 @@ public void TryLearn(Entity<ParrotMemoryComponent?, ParrotListenerComponent?> en
151154 /// <param name="entity">Entity learning a new word</param>
152155 /// <param name="message">Message to learn</param>
153156 /// <param name="source">Source EntityUid of the message</param>
154- private void Learn ( Entity < ParrotMemoryComponent > entity , string message , EntityUid source )
157+ /// <param name="lang"></param>
158+ private void Learn ( Entity < ParrotMemoryComponent > entity , string message , EntityUid source , ProtoId < LanguagePrototype > lang ) // backmen
155159 {
156160 // log a low-priority chat type log to the admin logger
157161 // specifies what message was learnt by what entity, and who taught the message to that entity
@@ -163,7 +167,7 @@ private void Learn(Entity<ParrotMemoryComponent> entity, string message, EntityU
163167 sourceNetUserId = mind . UserId ;
164168 }
165169
166- var newMemory = new SpeechMemory ( sourceNetUserId , message ) ;
170+ var newMemory = new SpeechMemory ( sourceNetUserId , message , lang ) ;
167171
168172 // add a new message if there is space in the memory
169173 if ( entity . Comp . SpeechMemories . Count < entity . Comp . MaxSpeechMemory )
0 commit comments