AI_VO_Hooks
The new VOs are defined by an event type and a bunch of modifiers:
VOSound = "rep_inf_com_chatter_acquired1 AcquiredTarget"
VOSound = "rep_inf_com_chatter_acquired2 AcquiredTarget +Above"
Both of these work on the AcquiredTarget event, which is played when an AI picks a new target to shoot at. The first one is the normal sound, and might say something
like "I'm shooting at that guy". But if there is ever a case where the new target is above that guy, it would get the "+Above" modifier when that VO is called, which would
cause it to play the second sound, which could be "I'm shooting at that guy up there".
You can have more than one modifier on a sound. So if in addition to the two sounds above you added two more:
VOSound = "rep_inf_com_chatter_acquired1 AcquiredTarget"
VOSound = "rep_inf_com_chatter_acquired2 AcquiredTarget +Above"
VOSound = "rep_inf_com_chatter_acquired3 AcquiredTarget +Right"
VOSound = "rep_inf_com_chatter_acquired4 AcquiredTarget +Above +Right"
It will use the most specific one that it can. So if you had a target above and to the right, it would play the 4th sound. But if you had a target that was above and
to the left, it would use the 2nd one, since it could match +Above, but nothing had +Left.
The modifiers I've come up with so far are listed below. There are many more that would be useful. We talked about specific Hero names. They could also include
specific vehicle names, or other unit types besides IsSniper. Or info about theplayer's current weapon ("Are you crazy, you're not going after that ATAT with a
pistol are you?"). Let me know what you want.
The 'target' object for each VO can be set for each case. So for AcquiredTarget it is obviously a unit or vehicle, but for some of the command post VO's the target
could actually be the CP itself, so the Left/Right/Above modifiers would work on its position. Basically anything that is an object in the game can be a target.
Also the list of VO event hooks (at the bottom) can be greatly added to. Basically anything you think should have a VO can be added as an event, just let me know. What
I've got so far is just the ones from last game, and the two or three CP ones we just talked about. A lot of things can come out of hint nodes and squad behavior, and
also the new game modes.
The modifiers come in sets, and you can only get one modifier (or none) from each set at a time.
Set 1:
"Above" - TARGET above us
"Below" - TARGET below us
"Cover" - TARGET is hidden or in cover. Not sure how this will be defined yet.
Set2:
"Right" - TARGET to the right
"Left"
"Behind"
Set3:
"ReallyNear" - TARGET is <10 m away
"Near" - TARGET is <30 m away
"ReallyFar" - TARGET is >100m
Set4:
"TargetHealthBelow25"
This is the TARGET's health.
Set5:
"PlayerHealthBelow25"
This is the PLAYER's (the listener's) health.
Set6:
"IsFlyer"
"IsHover"
"IsWalker"
"IsTurret"
"IsSniper"
"IsRocket"
"IsHero"
These talk about the TARGET.
Set7:
"InFlyer"
"InHover"
"InWalker"
"InTurret"
"IsZoomed"
"IsProne"
These talk about the PLAYER. Not the guy that's talking, but who's listening, which is usually the local player. Useful in case you want to have an AI say something like
"I see an enemy coming, stop lying down!".
Set8:
"AdrenalineLow"
"AdrenalineMedium"
"AdrenalineHigh"
The adrenaline level of the PLAYER. Adrenaline goes up when action gets busy, people dying, people getting shot, and stuff like that. It will slowly bleed off over time.
You can view the player's adrenaline level in the game by typing "ai.showadrenaline" at the console.
Set9:
"VOUnitNum__" ie. "VOUnitNum23"
A tag like this means that the hook applies to (and only to) a target with this specific VO unit number id. The id for each unit should be set in the units' odf
file with a line:
VOUnitType = 221
The id can range from 1 to 255.
This is the list of VO hook events. The 'speaker' is who is actually saying the VO, so this is the ODF that the sound comes from. The 'target' is the object it uses for the TARGET modifiers above.
**************************************************************************************
**************************************************************************************
AcquiredTarget
Speaker: the guy that acquired the target
Target: the new guy he picked
- played when a nearby AI on your team picks a new target. happens quite a lot. this is a very common hook that can say anything that involves the bad guys location, and should be used for idle battle chatter. The 'ReallyNear' could say "They're right on top of us!". The 'Above' and 'IsSniper' could be used together to say "They have snipers up on the roof!".
**************************************************************************************
FriendlyFire
Speaker: the guy you shot
Target: you
- played when you shoot one of your own AI guys
**************************************************************************************
MissileLocking
MissileLocked
MissileIncoming
Speaker: the player
Target: the guy that shot the missile that is locked onto you
- played when a missile is in the various stages of locking onto the player. these directly correspond to the "MISSILE LOCKING" etc text that shows up on the HUD. note
that the three of these can happen very quickly in succession.
**************************************************************************************
PathFollowWait
Speaker: the guy that stops
Target: the closest human player
- this is played when an AI stops on his path for a moment. Usually it is when they are running down a narrow corridor, and they stop to take cover near a wall for a second or
two, turning to face the player. In the future it could also include a hand-wave forward sort of gesture. The VO's for this should be something like "Come on" or "This way". Just
about the only useful modifiers for this are the "Above"/"Below" ones, so you could say something like "Come on up", or "Its down here".
**************************************************************************************
Kill
HeadshotKill
Speaker: any nearby AI guy on your team
Target: the guy you killed
- played when the player (and only a player) kills somebody. HeadshotKill is for when the killing shot was a headshot.
**************************************************************************************
KillingSpree4
KillingSpree8
KillingSpree12
KillingSpree16
Speaker: anyone nearby
- played when the player (and only a player) kills X enemies in a row. If you don't kill anyone for 4 seconds the counter resets.
**************************************************************************************
Grenade
Speaker: the guy thats dodging it
Target: the grenade (just its position - for above/below/right/left/behind/near/reallynear modifiers)
- played when a grenade is detected nearby, the same as the old hook 'Flee' but with position modifiers.
**************************************************************************************
RepairStart
RepairEnd
GivePowerup
Speaker: the repair guy that is repairing
Target: the repair target (either a person, a vehicle, or a building/turret)
These are played when the repair guys do their repair stuff:
"RepairStart" is played when they choose something to repair (this happens before they go over to it, so they won't necessarily be close to the object)
"RepairEnd" is played when they fully repair (100% health) their target
"GivePowerup": if the target is a person, and the repair guy has a powerup dispenser, this is played when they give one out.
There are really two sequences for these, one for Soldiers and one for Vehicles/Turrets, which can be chosen based on the modifiers
-- add modifiers for damaged vehicles
VOSound = "snd1 RepairStart +IsHover"- 'That hover needs some fixing'
VOSound = "snd2 RepairEnd +IsHover"- 'Now you're all set!'
-- or turrets (can be unbuilt or damaged)
VOSound = "snd3 RepairStart +IsTurret"- 'Let me fix up this turret for you!'
VOSound = "snd4 RepairStart +IsTurret +TargetHealthBelow25" - 'I'll build a turret here'
VOSound = "snd5 RepairEnd +IsTurret"- 'That'll help you out'
-- no modifiers means it applies to Soldiers, which will usually be a dispenser weapon
VOSound = "snd6 RepairStart"- 'You could use some help...'
VOSound = "snd7 GivePowerup"- 'Take this'
you don't really need to define one that is just "snd RepairEnd" (no modifiers), because usually they only give out one powerup, so often that would play directly
after the 'GivePowerup' hook plays.
**************************************************************************************
DefendIdleLookWeapon
DefendIdleLookAround
DefendIdleLookPlayer
Speaker: the AI guy thats doing it
Target: the player for LookPlayer, nothing for the others
These are played while AI are defending and idle. They play an animation and then this sound.
LookWeapon is a 'checking my weapon' type of animation.
LookAround looks behind them to both sides.
LookPlayer looks directly at the closest player or AI for a few seconds.
**************************************************************************************
RebelsShootDeadBody
Speaker: the guy doing the shooting
Target: the guy he just killed
This is ONLY ever played by guys on the Rebel Alliance. Every once in a while if they kill a guy that is fairly near them, they'll run over and start shooting at the corpse on the
ground and play this sound. It should be trash talking of the finest quality.
**************************************************************************************
SC_Follow
SC_StopFollow
SC_VehicleWaitUp
SC_GetIn
SC_GetOut
Speaker: the player
Target: for follow/stop/wait: the object (soldier/vehicle) you're looking at.
for GetIn: the vehicle that the player is in (so you can use the type: "get into my ATST!")
for GetOut: the first AI in the vehicle you're in (so you can address it by type: "get out you wookiee!");
SC_FollowResponse
SC_StopFollowResponse
SC_VehicleWaitUpResponse
SC_GetInResponse
SC_GetOutResponse
Speaker: whoever you just ordered to do this
Squad Commands. See data/docs/SquadCommands.doc for more info on how they work. Each is a command (said by the player) and a response (said by the target).
Follow - aim at a soldier, they'll start following you around.
StopFollow - if somebody is following you, they'll stop.
VehicleWaitUp - aim at a vehicle, it'll wait for a few seconds while you run over.
GetIn - If you're in a vehicle with empty slots, this is said to guys around you.
GetOut - If you're in a vehicle with other people, this is said to the guys in it.
**************************************************************************************
SC_GetInResponseRepeat
Speaker: the unit that is already boarding your vehicle
Target: the player's vehicle
This is played when the player is in a vehicle and gives a squad command order to get in, then gives it again before the unit has actually gotten in. The order VO will not play again, but the unit that followed the order the first time will say this. Should be a somewhat sarcastic remark such as "Already on my way" or "I'm coming as fast as I can".
**************************************************************************************
NotShootingCriticalHit
Speaker: nearby AI
Target: the vehicle being shot
This is played when the player is shooting at a vehicle (walker/hover/flyer), but NOT aiming towards the critical hit location (if it has any). Played every 5 seconds as long as
they keep hitting non-crit points.
**************************************************************************************
JustBoardedVehicle
Speaker: the guy that just boarded
Target: the vehicle he got into
This is played when an AI guy gets into the same vehicle that the player is in. The TARGET is the vehicle, so you can tell which kind of vehicle it is.
**************************************************************************************
VehicleWaitingImpatiently
Speaker: the guy driving the vehicle
Target: the player
Played when a player tells a vehicle to wait up (via squad commands, ala the hook SC_VehicleWaitUp), but then doesn't get in right away. About 7-10 seconds later, this hook will play. 5 seconds after that the vehicle will give up and drive away. This should be used to taunt the player into getting into the vehicle: "Are you gonna get in or what?"
**************************************************************************************
NearbyEnemySlaughter
NearbyFriendlySlaughter
NearbyTeamKillSlaughter
Speaker: a nearby AI guy
Target: none
These are played when a lot of guys die around the player. Enemy happens when bad guys die, Friendly is your team, and TeamKill is your team dying because they were killed by your team. The parameters for this to be played is currently 4 guys die in 8 seconds within 25m of the player. Those can be changed if necessary.
**************************************************************************************