@@ -106,9 +106,6 @@ void C_BuildObituaryString(const int index)
106106 const mobjtype_t inflicter = obituary -> inflicter ;
107107 const mobjtype_t source = obituary -> source ;
108108
109- if (buffer [0 ])
110- return ;
111-
112109 if (obituary -> telefragged )
113110 {
114111 char sourcename [128 ] = "" ;
@@ -139,23 +136,22 @@ void C_BuildObituaryString(const int index)
139136 if (inflicter == MT_BARREL && target != MT_BARREL )
140137 {
141138 const char * inflictername = mobjinfo [inflicter ].name1 ;
142- const bool byplayer = (obituary -> barrelinflicter == MT_PLAYER );
143139
144140 if (obituary -> targetisplayer )
145141 {
146- if (byplayer )
142+ if (obituary -> barrelinflicter == MT_PLAYER )
147143 {
148144 if (isdefaultplayername ())
149145 M_snprintf (buffer , buffersize , "You were %s by %s %s that you exploded!" ,
150146 (obituary -> gibbed ? s_GIBBED : s_KILLED ),
151147 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
152- (inflictername ? inflictername : "barrel" ));
148+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ));
153149 else
154150 M_snprintf (buffer , buffersize , "%s was %s by %s %s that %s exploded!" ,
155151 playername ,
156152 (obituary -> gibbed ? s_GIBBED : s_KILLED ),
157153 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
158- (inflictername ? inflictername : "barrel" ),
154+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ),
159155 pronoun (personal ));
160156 }
161157 else
@@ -168,7 +164,7 @@ void C_BuildObituaryString(const int index)
168164 (isdefaultplayername () ? "You" : playername ),
169165 (obituary -> gibbed ? s_GIBBED : s_KILLED ),
170166 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
171- (inflictername ? inflictername : "barrel" ),
167+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ),
172168 (inflicter == killer || M_StringCompare (inflictername , killername ) ? "another" :
173169 (* killername && isvowel (killername [0 ]) ? "an" : "a" )),
174170 (* killername && !M_StringStartsWith (killername , "Deh_Actor_" ) ? killername : "monster" ));
@@ -181,25 +177,25 @@ void C_BuildObituaryString(const int index)
181177 C_BuildThingName (targetname , sizeof (targetname ), target , obituary -> targetfriendly ,
182178 (obituary -> targetcorpse && source != target ), obituary -> targetname , "" );
183179
184- if (byplayer )
180+ if (obituary -> barrelinflicter == MT_PLAYER )
185181 {
186182 if (isdefaultplayername ())
187183 M_snprintf (buffer , buffersize , "%s was %s by %s %s that you exploded." ,
188184 targetname , (obituary -> gibbed ? s_GIBBED : s_KILLED ),
189185 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
190- (inflictername ? inflictername : "barrel" ));
186+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ));
191187 else
192188 M_snprintf (buffer , buffersize , "%s was %s by %s %s that %s exploded." ,
193189 targetname , (obituary -> gibbed ? s_GIBBED : s_KILLED ),
194190 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
195- (inflictername ? inflictername : "barrel" ),
191+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ),
196192 playername );
197193 }
198194 else if (source == target )
199195 M_snprintf (buffer , buffersize , "%s was %s by %s %s that they exploded." ,
200196 targetname , (obituary -> gibbed ? s_GIBBED : s_KILLED ),
201197 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
202- (inflictername ? inflictername : "barrel" ));
198+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ));
203199 else
204200 {
205201 const mobjtype_t killer = obituary -> barrelinflicter ;
@@ -209,7 +205,7 @@ void C_BuildObituaryString(const int index)
209205 M_snprintf (buffer , buffersize , "%s was %s by %s %s that %s %s exploded." ,
210206 targetname , (obituary -> gibbed ? s_GIBBED : s_KILLED ),
211207 (inflictername && isvowel (inflictername [0 ]) ? "an" : "a" ),
212- (inflictername ? inflictername : "barrel" ),
208+ (inflictername ? inflictername : mobjinfo [ MT_BARREL ]. name1 ),
213209 (inflicter == killer || M_StringCompare (inflictername , killername ) ? "another" :
214210 (* killername && isvowel (killername [0 ]) ? "an" : "a" )),
215211 (* killername && !M_StringStartsWith (killername , "Deh_Actor_" ) ? killername : "monster" ));
@@ -341,23 +337,41 @@ void C_BuildObituaryString(const int index)
341337
342338static bool C_SameObituary (const obituaryinfo_t * a , const obituaryinfo_t * b )
343339{
344- return (a -> target == b -> target
345- && a -> inflicter == b -> inflicter
346- && a -> source == b -> source
347- && a -> barrelinflicter == b -> barrelinflicter
348- && a -> weapon == b -> weapon
349- && a -> gibbed == b -> gibbed
350- && a -> telefragged == b -> telefragged
351- && a -> targetisplayer == b -> targetisplayer
352- && a -> sourceisplayer == b -> sourceisplayer
353- && a -> targetfriendly == b -> targetfriendly
354- && a -> sourcefriendly == b -> sourcefriendly
355- && a -> targetcorpse == b -> targetcorpse
356- && a -> crushed == b -> crushed
357- && a -> terraintype == b -> terraintype
358- && a -> floorpic == b -> floorpic
359- && M_StringCompare (a -> targetname , b -> targetname )
360- && M_StringCompare (a -> sourcename , b -> sourcename ));
340+ if (a -> target != b -> target
341+ || a -> source != b -> source
342+ || a -> barrelinflicter != b -> barrelinflicter
343+ || a -> weapon != b -> weapon
344+ || a -> gibbed != b -> gibbed
345+ || a -> telefragged != b -> telefragged
346+ || a -> targetisplayer != b -> targetisplayer
347+ || a -> sourceisplayer != b -> sourceisplayer
348+ || a -> targetfriendly != b -> targetfriendly
349+ || a -> sourcefriendly != b -> sourcefriendly
350+ || a -> targetcorpse != b -> targetcorpse
351+ || a -> crushed != b -> crushed )
352+ return false;
353+
354+ if (a -> source == MT_NULL )
355+ {
356+ if (a -> terraintype != b -> terraintype
357+ || a -> floorpic != b -> floorpic )
358+ return false;
359+ }
360+
361+ if ((!a -> sourceisplayer && a -> source != MT_BFG )
362+ || (!b -> sourceisplayer && b -> source != MT_BFG ))
363+ {
364+ if (a -> inflicter != b -> inflicter )
365+ return false;
366+ }
367+
368+ if (!M_StringCompare (a -> targetname , b -> targetname ))
369+ return false;
370+
371+ if (!M_StringCompare (a -> sourcename , b -> sourcename ))
372+ return false;
373+
374+ return true;
361375}
362376
363377void C_WriteObituary (mobj_t * target , mobj_t * inflicter , mobj_t * source ,
@@ -425,30 +439,21 @@ void C_WriteObituary(mobj_t *target, mobj_t *inflicter, mobj_t *source,
425439 obituary .gibbed = gibbed ;
426440 obituary .telefragged = telefragged ;
427441
428- if (numconsolestrings > 0
429- && (console [i ].stringtype == obituarystring || console [i ].stringtype == playerobituarystring )
442+ if (groupmessages
443+ && numconsolestrings > 0
444+ && console [i ].stringtype == obituarystring
430445 && C_SameObituary (& console [i ].obituary , & obituary ))
431446 {
432447 console [i ].obituary = obituary ;
433448 C_CreateTimeStamp (i );
434449 console [i ].count ++ ;
435450 outputhistory = -1 ;
436-
437- if (obituaries && console [i ].stringtype == playerobituarystring )
438- {
439- console [i ].string [0 ] = '\0' ;
440- C_BuildObituaryString (i );
441- HU_SetPlayerMessage (console [i ].string , false, false);
442- message_warning = true;
443- }
444-
445451 return ;
446452 }
447453
448454 if (numconsolestrings >= (int )consolestringsmax )
449455 console = I_Realloc (console , (consolestringsmax += CONSOLESTRINGSMAX ) * sizeof (* console ));
450456
451- console [numconsolestrings ].string [0 ] = '\0' ;
452457 console [numconsolestrings ].wrap = 0 ;
453458 console [numconsolestrings ].count = 1 ;
454459 C_CreateTimeStamp (numconsolestrings );
@@ -459,20 +464,20 @@ void C_WriteObituary(mobj_t *target, mobj_t *inflicter, mobj_t *source,
459464 {
460465 console [numconsolestrings ].stringtype = playerobituarystring ;
461466 console [numconsolestrings ].indent = WARNINGWIDTH + 2 ;
467+
468+ if (obituaries )
469+ {
470+ C_BuildObituaryString (numconsolestrings );
471+ HU_SetPlayerMessage (console [numconsolestrings ].string , false, false);
472+ message_warning = true;
473+ }
462474 }
463475 else
464476 {
465477 console [numconsolestrings ].stringtype = obituarystring ;
466478 console [numconsolestrings ].indent = 0 ;
467479 }
468480
469- if (obituaries && console [numconsolestrings ].stringtype == playerobituarystring )
470- {
471- C_BuildObituaryString (numconsolestrings );
472- HU_SetPlayerMessage (console [numconsolestrings ].string , false, false);
473- message_warning = true;
474- }
475-
476481 numconsolestrings ++ ;
477482 outputhistory = -1 ;
478483}
0 commit comments