Skip to content

Commit ddde12d

Browse files
committed
Further work on obituaries
1 parent 14cf608 commit ddde12d

File tree

2 files changed

+55
-50
lines changed

2 files changed

+55
-50
lines changed

src/c_console.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ void C_Warning(const int warninglevel, const char *string, ...)
337337
console = I_Realloc(console, (consolestringsmax += CONSOLESTRINGSMAX) * sizeof(*console));
338338

339339
M_StringCopy(console[numconsolestrings].string, buffer, sizeof(console[0].string));
340-
console[numconsolestrings].indent = WARNINGWIDTH + 1;
340+
console[numconsolestrings].indent = WARNINGWIDTH + 2;
341341
console[numconsolestrings].wrap = 0;
342342
console[numconsolestrings].stringtype = warningstring;
343343
console[numconsolestrings].count = 1;

src/c_obituary.c

Lines changed: 54 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -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

342338
static 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

363377
void 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

Comments
 (0)