You make a compelling argument so I'll see what I can do to make it a reality. If all of the combined packs use the default animations (the Halo 4 one doesn't but would probably work fine regardless), there probably wouldn't be much of a problem. The issues would begin when you have a bunch of packs that use custom animations that don't play nicely with each other. The animation system has the concepts of grouping and priority where you can have multiple sets of sprites/medals on the screen at once and make sure they play nicely, which could help in this situation if packs were coded with a bit of thought. It'll be explained in the documentation.
The main reason I haven't initially allowed for multiple packs to be loaded is because I wanted to ensure a smooth experience for the users and to avoid the complaints when users try to do something that the system wasn't designed for and not because I haven't considered these problems, more because there's no perfect solution that's going to work in every case.
Anyway, with your test script, you're missing the arguments for the callbacks. Try this (untested):
I could add channel volume controls to the queue_audio function if that'd be useful. You could calculate player/object distances (when the full API is available, will be making a short post about the situation shortly) and then adjust as required. It wouldn't be great since you wouldn't be able to deal with geometry but perhaps better than nothing at all.Code:...sound table stuff...
function register_callbacks()
register_callback(cb['PLAYER_KILLS'], "playDeathVoiceKill")
register_callback(cb['PLAYER_ENVIRONMENTAL_DEATHS'], "playDeathVoiceEnv")
end
function playDeathVoiceEnv(event, victim, player, timestamp)
if(victim == player) then
queue_audio(deathVoiceTable[math.random(#deathVoiceTable)])
end
end
function playDeathVoiceEnv(event, killer, victim, player, timestamp)
if(victim == player) then
queue_audio(deathVoiceTable[math.random(#deathVoiceTable)])
end
end