diff --git a/src/game/g_func.c b/src/game/g_func.c index 88642387..d5c1e0a3 100644 --- a/src/game/g_func.c +++ b/src/game/g_func.c @@ -2601,6 +2601,8 @@ void door_touch(edict_t *self, edict_t *other, cplane_t *plane /* unused */, csurface_t *surf /* unused */) { + int sound_index; + if (!self || !other) { return; @@ -2618,8 +2620,9 @@ door_touch(edict_t *self, edict_t *other, cplane_t *plane /* unused */, self->touch_debounce_time = level.time + 5.0; - gi.centerprintf(other, "%s", LocalizationMessage(self->message)); - gi.sound(other, CHAN_AUTO, gi.soundindex("misc/talk1.wav"), 1, ATTN_NORM, 0); + sound_index = gi.soundindex("misc/talk1.wav"); + gi.centerprintf(other, "%s", LocalizationMessage(self->message, &sound_index)); + gi.sound(other, CHAN_AUTO, sound_index, 1, ATTN_NORM, 0); } void diff --git a/src/game/g_newfnc.c b/src/game/g_newfnc.c index 7a69e590..e2463d9b 100644 --- a/src/game/g_newfnc.c +++ b/src/game/g_newfnc.c @@ -228,7 +228,15 @@ secret_touch(edict_t *self, edict_t *other, cplane_t *plane /* unused */, csurfa if (self->message) { - gi.centerprintf(other, LocalizationMessage(self->message)); + int sound_index; + + sound_index = 0; + gi.centerprintf(other, LocalizationMessage(self->message, &sound_index)); + + if (sound_index) + { + gi.sound(other, CHAN_AUTO, sound_index, 1, ATTN_NORM, 0); + } } } diff --git a/src/game/g_spawn.c b/src/game/g_spawn.c index ed9a9173..4cf0ea73 100644 --- a/src/game/g_spawn.c +++ b/src/game/g_spawn.c @@ -865,7 +865,8 @@ SP_worldspawn(edict_t *ent) /* make some data visible to the server */ if (ent->message && ent->message[0]) { - Q_strlcpy(level.level_name, LocalizationMessage(ent->message), sizeof(level.level_name)); + Q_strlcpy(level.level_name, LocalizationMessage(ent->message, NULL), + sizeof(level.level_name)); gi.configstring(CS_NAME, level.level_name); } else diff --git a/src/game/g_translate.c b/src/game/g_translate.c index 80a9d6d2..38479846 100644 --- a/src/game/g_translate.c +++ b/src/game/g_translate.c @@ -270,9 +270,21 @@ LocalizationInit(void) { *sign = 0; sign ++; + + /* replace '\' with '/' in sound path */ + currend = sign; + while(*currend) + { + if (*currend == '\\') + { + *currend = '/'; + } + + currend++; + } } - /* replace @ with new line */ + /* replace @ in message with new line */ currend = curr; while(*currend) { @@ -360,7 +372,7 @@ LocalizationSearch(const char *name) } const char* -LocalizationMessage(const char *message) +LocalizationMessage(const char *message, int *sound_index) { if (!message || !localmessages || !nlocalmessages) { @@ -375,6 +387,11 @@ LocalizationMessage(const char *message) i = LocalizationSearch(message); if (i >= 0) { + if (sound_index && localmessages[i].sound) + { + *sound_index = gi.soundindex(localmessages[i].sound); + } + return localmessages[i].value; } } diff --git a/src/game/g_utils.c b/src/game/g_utils.c index 08429b41..0ac72725 100644 --- a/src/game/g_utils.c +++ b/src/game/g_utils.c @@ -321,17 +321,19 @@ G_UseTargets(edict_t *ent, edict_t *activator) /* print the message */ if (activator && (ent->message) && !(activator->svflags & SVF_MONSTER)) { - gi.centerprintf(activator, "%s", LocalizationMessage(ent->message)); + int sound_index; if (ent->noise_index) { - gi.sound(activator, CHAN_AUTO, ent->noise_index, 1, ATTN_NORM, 0); + sound_index = ent->noise_index; } else { - gi.sound(activator, CHAN_AUTO, gi.soundindex( - "misc/talk1.wav"), 1, ATTN_NORM, 0); + sound_index = gi.soundindex("misc/talk1.wav"); } + + gi.centerprintf(activator, "%s", LocalizationMessage(ent->message, &sound_index)); + gi.sound(activator, CHAN_AUTO, sound_index, 1, ATTN_NORM, 0); } /* kill killtargets */ diff --git a/src/game/header/local.h b/src/game/header/local.h index 12172751..d3a94480 100644 --- a/src/game/header/local.h +++ b/src/game/header/local.h @@ -996,7 +996,7 @@ void EndDMLevel(void); /* g_translate.c */ void LocalizationInit(void); -const char* LocalizationMessage(const char *message); +const char* LocalizationMessage(const char *message, int *sound_index); /* g_chase.c */ void UpdateChaseCam(edict_t *ent); diff --git a/src/game/player/hud.c b/src/game/player/hud.c index 1d961769..3d854128 100644 --- a/src/game/player/hud.c +++ b/src/game/player/hud.c @@ -421,8 +421,8 @@ HelpComputerMessage(edict_t *ent) "xv 50 yv 172 string2 \"%3i/%3i %i/%i %i/%i\" ", sk, level.level_name, - LocalizationMessage(game.helpmessage1), - LocalizationMessage(game.helpmessage2), + LocalizationMessage(game.helpmessage1, NULL), + LocalizationMessage(game.helpmessage2, NULL), level.killed_monsters, level.total_monsters, level.found_goals, level.total_goals, level.found_secrets, level.total_secrets);