I took your suggestion in making a separate plugin that logs EVERY scene created, but I had assumed correctly, and the call for rescue lines don't actually spawn a scene, I guess that's something that we can't correct then.
For some reason, sometimes the replacement scene is delayed too much, like in the video, the incapacitatedinitial line was so delayed that it was interrupted by the incapacitatedhurt one instead, but that's a non issue as the delay is only noticeable when using grenades, as they are called almost after the grenade toss is done.
In case you're wondering what the plugin looks like right now...
And this is only about barely 30% of Nick's scenes, this'll look waaaaaaaaaaaaaaaayyyyyyy bigger when I'm done
(Hint : Nick still has roughly about 1,000 - 1,300 more scenes to go...
Call for rescue lines maybe before they put in scenes and what not. I know a few more does not trigger the scenes, such as the melee weapon grunt (always Coach's line).
The way we replace scenes is a bit sloppy in my opinion since we do it after the original scene is to be played, then we create another scene and overwrite the original. All of that takes time and as you noticed yourself, it can create a delay. Detouring functions would probably be a better solution but I am not that much invested in it to do such a thing at the moment.
Call for rescue lines maybe before they put in scenes and what not. I know a few more does not trigger the scenes, such as the melee weapon grunt (always Coach's line).
The way we replace scenes is a bit sloppy in my opinion since we do it after the original scene is to be played, then we create another scene and overwrite the original. All of that takes time and as you noticed yourself, it can create a delay. Detouring functions would probably be a better solution but I am not that much invested in it to do such a thing at the moment.
If I understood what you're telling me correctly, things work like this.
The scene is being cancelled upon being initialized, this would mean the scene initializes AFTER the predelay has passed.
This would mean that our problem here is that the predelay is being applied twice then, once before the scene begins, and again for the new scene replacing it.
In theory, this means that simply removing the predelay (or setting it to 0) for the new scene should take care of this problem, correct?
Edit : Going through the talker files, I found this section;
Spoiler
Response PlayerCallForRescueTeenGirl
{
speak "Player.TeenGirl_CallForRescue01" noscene //Anyone out there? I'm trapped in here!
speak "Player.TeenGirl_CallForRescue02" noscene //Please! I need some help! LET ME OUT OF HERE!!
speak "Player.TeenGirl_CallForRescue06" noscene //Help please! I need some help getting out of here!
speak "Player.TeenGirl_CallForRescue07" noscene //Someone? Anyone! Help! Please!
speak "Player.TeenGirl_CallForRescue14" noscene //Hello? Anyone out there? I need some help!
speak "Player.TeenGirl_CallForRescue16" noscene //Guys! GUYS! I'm over here! I'm trapped!
speak "Player.TeenGirl_LostCall01" noscene //Hello?
speak "Player.TeenGirl_LostCall010" noscene //Where are you guys?
speak "Player.TeenGirl_LostCall04" noscene //Is anyone there?
speak "Player.TeenGirl_LostCall06" noscene //Helloooo?
speak "Player.TeenGirl_LostCall07" noscene //Anyone Around?
speak "Player.TeenGirl_LostCall09" noscene //Hey guys, where are you?
speak "Player.TeenGirl_LostCall13" noscene //Guys?
}
However, it says noscene, I'm guessing SceneProcessor won't be able to pick and interrupt these lines, any Idea of what I could do for them?
There are scenefiles for these vocals and the concept to fire them as well. I'm pretty sure you can just rewrite this part of the talker to use the respective scene instead.
Response LostCallTeengirl
{
scene "scenes/teengirl/lostcall01.vcd"
....
}
I'd assume several people wrote these talker files which is also the reason why the style and the event naming changes a lot and then valve also seems to have a partially automatic process to generate the talker.
If I understood what you're telling me correctly, things work like this.
The scene is being cancelled upon being initialized, this would mean the scene initializes AFTER the predelay has passed.
This would mean that our problem here is that the predelay is being applied twice then, once before the scene begins, and again for the new scene replacing it.
In theory, this means that simply removing the predelay (or setting it to 0) for the new scene should take care of this problem, correct?
No the scene capturing happens on entity created, before the predelay of the scene is set. The predelay is not an issue.
However what I am trying to say if I were to detour for example SpeakConcept function to intercept all talker lines then that may give us some better tools to allow alteration of scenes before the scenes are even created. Even allowing us to take control of perhaps larger scenes, such as elevator conversations.
So, apparently, the meleeswing lines don't seem to actually work with PerformSceneEx even though they are valid .wav files with their appropriate .vcd scene files correctly located and everything.
I even had a whole plugin written for it and everything
public Plugin:myinfo =
{
name = PLUGIN_NAME,
author = "DeathChaos25",
description = "Implements Valve's unused combat grunts for melee weapons whenever survivors use melee weapons (not chainsaw) based on a (customizable) chance",
version = PLUGIN_VERSION,
}
public OnPluginStart()
{
HookEvent("weapon_fire", Event_WeaponUsed)
HookEvent("infected_decapitated", Event_HeadShot)
new Handle:CombatGruntChance = CreateConVar("combat_grunt_chance", "75", "Chance out of 100 (i.e 25 for 25% chance) that a survivor will vocalize their combat grunts when using their melee weapon", FCVAR_PLUGIN, true, 1.0, true, 100.0)
HookConVarChange(CombatGruntChance, ConVarCombatGrunt)
g_iCombatGruntChance = GetConVarInt(CombatGruntChance)
new Handle:EllisCommentChance = CreateConVar("ellis_comment_chance", "75", "Chance out of 100 (i.e 25 for 25% chance) that a Ellis will make a comment when beheading a common infected with a melee weapon", FCVAR_PLUGIN, true, 1.0, true, 100.0)
HookConVarChange(EllisCommentChance, ConVarEllisComment)
g_iEllisCommentChance = GetConVarInt(EllisCommentChance)
I even threw in an event hook for "infected_decapitated" because Ellis (and only Ellis) actually has some reaction lines for when he decapitates a common (ex "That zombie was too tall, I fixed 'im!") etc...
This was one of the oldest issues with the game, the melee swing grunts. Perhaps its meant to be that everyone sounds like Coach when swinging a weapon.
For the sake of thoroughness. Here is a link to a plugin developed by the competitive L4D2 community that was said to utilize the L4D2 survivor melee grunt sounds. However I don't think it works either, since I tried it and never noticed any new sounds. Have a look at it if you wish.
This was one of the oldest issues with the game, the melee swing grunts. Perhaps its meant to be that everyone sounds like Coach when swinging a weapon.
For the sake of thoroughness. Here is a link to a plugin developed by the competitive L4D2 community that was said to utilize the L4D2 survivor melee grunt sounds. However I don't think it works either, since I tried it and never noticed any new sounds. Have a look at it if you wish.
scalesettings
{
"CChoreoView" "64"
"ExpressionTool" "100"
"RampTool" "66"
"GestureTool" "100"
"SceneRampTool" "100"
}
fps 60
snap off
ignorePhonemes off
Apart from the "namvet_gesture_head_yes" Everything seems completely fine here.
I think Valve's "fix" was probably just implementing a check to kill the .wavs or .vcds if they pop up, I'll play around with the other scenes some more to see what results...
This was one of the oldest issues with the game, the melee swing grunts. Perhaps its meant to be that everyone sounds like Coach when swinging a weapon.
For the sake of thoroughness. Here is a link to a plugin developed by the competitive L4D2 community that was said to utilize the L4D2 survivor melee grunt sounds. However I don't think it works either, since I tried it and never noticed any new sounds. Have a look at it if you wish.
well i just glimpsed over the code.. isn't it only supposed to fire when a special infected is killed? so not all the time? doubt that would fix the issue. also.. the issue only exists with the axe.. (and possibly with the guitar too as its also dual wield and it's the same animation being used?)
btw sidenote:.. by posting the VCF file. you made me check one from nick and one from ellis.. and there i noticed, that all other male l4d2 survivors (coach & ellis) have as their first actor "Gambler" with no properties attached..
I wonder if that is the reason why nick is able to interrupt coach and ellis by vocalizing something...
well i just glimpsed over the code.. isn't it only supposed to fire when a special infected is killed? so not all the time? doubt that would fix the issue. also.. the issue only exists with the axe.. (and possibly with the guitar too as its also dual wield and it's the same animation being used?)
btw sidenote:.. by posting the VCF file. you made me check one from nick and one from ellis.. and there i noticed, that all other male l4d2 survivors (coach & ellis) have as their first actor "Gambler" with no properties attached..
I wonder if that is the reason why nick is able to interrupt coach and ellis by vocalizing something...
Now that I think about it, that would explain why there was a bug where neither Ellis or Coach could vocalize when Nick was dead.
I'm not in any position to say this, but, wtf Valve, coding it that way makes no sense.