Jump to content

Sound replacement possible?


TRekNexus

Recommended Posts

  • Replies 199
  • Created
  • Last Reply

Top Posters In This Topic

I didn't put mine in the XComGame package, but in a brand new package that's only a script editor package.

 

At any rate, I think it's kind of academic at this point. Not having the native c++ code to properly cook the package complete with the event map means extra work for each bank even if we do figure it out, whereas your script mod lets us just use banks produced directly by UDK.

 

Also: the classes aren't xcom specific, you can set the voice class right from the UDK in the cues. It doesn't help though :smile:

Edited by tracktwo
Link to comment
Share on other sites

Ok, I figured it out: it's a licensing issue. because as you said, the c++ native code doesn't work with the free version. When the engine loads the voice bank, it notes that the licensee number in the package is 0, so clearly there cannot be any native code to execute, even though the actual XComCharacterVoiceBank class is a licensed, native class. Simply changing the byte in the package so that it pretends to be a licensed version tells the engine there may be code to run and the package works exactly as I expected it to the very first time I created it. I don't know if it's ok to distribute packages that lie about their licensee version, even though XCom itself is fully licensed, so your script method is probably the way to go here.

Link to comment
Share on other sites

Wghost, I found a small type in your PatchUPK code :

//case 49:
0A [@case50] 24 <%b 50>
//Cue = CurrentVoiceBank.MeldSpotted
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldSpotted> 00 01 <XComCharacterVoiceBank.MeldSpotted>
//break
06 [@Play]
[#case50]
//case 50:
0A [@case57] 24 <%b 50>
//Cue = CurrentVoiceBank.MeldCollected
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldCollected> 00 01 <XComCharacterVoiceBank.MeldCollected>
//break
06 [@Play]

the case 49 is set up to use the value for 50 instead, which would result in Meld Spotting having no sound and Meld Collecting playing the Meld Spotted sound. I spotted this while converting the replacement function to UPKmodder format.

 

For those interested in such things here is the equivalent UPKmodder file :

 

Hex only :

 

 

MODFILEVERSION=4
UPKFILE=XComGame.upk
GUID=1C 18 A1 1A 2B C3 34 4E 8B 2C 72 33 CD 16 7E 3E // XComGame_EW_patch3.upk
FUNCTION=PlaySoundForEvent@XComCharacterVoice
RESIZE=A70

// replace vanilla native GetSoundCue with switch/case to map ECharacterSpeech even to SoundCue

[BEFORE_HEX]
[HEADER]
5A 01 00 00 E2 00 00 00 
[/HEADER]
[CODE]
//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)
07 F0 00 84 19 19 2E 07 6A 00 00 19 12 20 35 FE FF FF 0A 00 91 F9 FF FF 00 1C D4 FB FF FF 16 0A 00 90 F9 FF FF 00 1B FA 3A 00 00 00 00 00 00 16 09 00 63 69 00 00 00 01 63 69 00 00 0A 00 24 6A 00 00 00 2D 01 24 6A 00 00 18 7E 00 19 19 19 2E E4 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 F0 32 00 00 00 01 F0 32 00 00 09 00 C9 B0 00 00 00 01 C9 B0 00 00 0A 00 A8 B4 00 00 00 2D 01 A8 B4 00 00 16 

	//return
	04 0B 

//Cue = GetSoundCue(Event)
0F 00 AF 4B 00 00 1C AC 4B 00 00 00 B1 4B 00 00 16 

//if(Cue != none)
07 57 01 77 00 AF 4B 00 00 2A 16 

	//Owner.PlaySound(Cue, true)
	19 00 B0 4B 00 00 18 00 00 00 00 00 00 1C 30 FC FF FF 00 AF 4B 00 00 27 4A 4A 4A 4A 16 

	//StreamNextVoiceBank(true)
	1C AE 4B 00 00 27 16 

//else
06 57 01 

//return
04 0B 

//EOS
53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
FA 10 00 00 52 0B 00 00 
[/HEADER]
[CODE]
//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)
07 F0 00 84 19 19 2E 07 6A 00 00 19 12 20 35 FE FF FF 0A 00 91 F9 FF FF 00 1C D4 FB FF FF 16 0A 00 90 F9 FF FF 00 1B FA 3A 00 00 00 00 00 00 16 09 00 63 69 00 00 00 01 63 69 00 00 0A 00 24 6A 00 00 00 2D 01 24 6A 00 00 18 7E 00 19 19 19 2E E4 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 F0 32 00 00 00 01 F0 32 00 00 09 00 C9 B0 00 00 00 01 C9 B0 00 00 0A 00 A8 B4 00 00 00 2D 01 A8 B4 00 00 16 

	//return
	04 0B 

//if (CurrentVoiceBank != none)
07 A8 10 77 01 A7 4B 00 00 2A 16

	//switch(Event)
	05 B1 4B 00 00 00 00 B1 4B 00 00 

		//case 1:
		0A 42 01 24 01

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FC 4B 00 00 00 01 FC 4B 00 00 
			//break
			06 A8 10

		//case 2:
		0A 72 01 24 02

			//Cue = CurrentVoiceBank.Reload
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FB 4B 00 00 00 01 FB 4B 00 00 
			//break
			06 A8 10

		//case 3:
		0A A2 01 24 03

			//Cue = CurrentVoiceBank.Overwatching
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FA 4B 00 00 00 01 FA 4B 00 00 
			//break
			06 A8 10

		//case 4:
		0A D2 01 24 04

			//Cue = CurrentVoiceBank.Moving
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F9 4B 00 00 00 01 F9 4B 00 00 
			//break
			06 A8 10

		//case 5:
		0A 02 02 24 05

			//Cue = CurrentVoiceBank.Dashing
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F8 4B 00 00 00 01 F8 4B 00 00 
			//break
			06 A8 10

		//case 6:
		0A 32 02 24 06

			//Cue = CurrentVoiceBank.JetPackMove
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F7 4B 00 00 00 01 F7 4B 00 00 
			//break
			06 A8 10

		//case 7:
		0A 62 02 24 07

			//Cue = CurrentVoiceBank.LowAmmo
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F6 4B 00 00 00 01 F6 4B 00 00 
			//break
			06 A8 10

		//case 8:
		0A 92 02 24 08

			//Cue = CurrentVoiceBank.OutOfAmmo
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F5 4B 00 00 00 01 F5 4B 00 00 
			//break
			06 A8 10

		//case 9:
		0A C2 02 24 09

			//Cue = CurrentVoiceBank.Suppressing
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F4 4B 00 00 00 01 F4 4B 00 00 
			//break
			06 A8 10

		//case 10:
		0A F2 02 24 0A

			//Cue = CurrentVoiceBank.AreaSuppressing
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F3 4B 00 00 00 01 F3 4B 00 00 
			//break
			06 A8 10

		//case 11: // painting target
		0A 22 03 24 0B

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FC 4B 00 00 00 01 FC 4B 00 00 
			//break
			06 A8 10

		//case 12: // destroying cover
		0A 52 03 24 0C

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FC 4B 00 00 00 01 FC 4B 00 00 
			//break
			06 A8 10

		//case 13:
		0A 82 03 24 0D

			//Cue = CurrentVoiceBank.FlushingTarget
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F2 4B 00 00 00 01 F2 4B 00 00 
			//break
			06 A8 10

		//case 14:
		0A B2 03 24 0E

			//Cue = CurrentVoiceBank.HealingAlly
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F1 4B 00 00 00 01 F1 4B 00 00 
			//break
			06 A8 10

		//case 15:
		0A E2 03 24 0F

			//Cue = CurrentVoiceBank.StabilizingAlly
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 F0 4B 00 00 00 01 F0 4B 00 00 
			//break
			06 A8 10

		//case 16:
		0A 12 04 24 10

			//Cue = CurrentVoiceBank.RevivingAlly
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 EF 4B 00 00 00 01 EF 4B 00 00 
			//break
			06 A8 10

		//case 17:
		0A 42 04 24 11

			//Cue = CurrentVoiceBank.CombatStim
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 EE 4B 00 00 00 01 EE 4B 00 00 
			//break
			06 A8 10

		//case 18: // PrimingGrenade
		0A 72 04 24 12

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FC 4B 00 00 00 01 FC 4B 00 00 

			//break
			06 A8 10

		//case 19:
		0A A2 04 24 13

			//Cue = CurrentVoiceBank.FragOut
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 ED 4B 00 00 00 01 ED 4B 00 00 
			//break
			06 A8 10

		//case 20:
		0A D2 04 24 14

			//Cue = CurrentVoiceBank.SmokeGrenadeThrown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 EC 4B 00 00 00 01 EC 4B 00 00 
			//break
			06 A8 10

		//case 21:
		0A 02 05 24 15

			//Cue = CurrentVoiceBank.SpyGrenadeThrown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 EB 4B 00 00 00 01 EB 4B 00 00 
			//break
			06 A8 10

		//case 22: // FlashbangThrown
		0A 32 05 24 16

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 FC 4B 00 00 00 01 FC 4B 00 00 
			//break
			06 A8 10

		//case 23:
		0A 62 05 24 17

			//Cue = CurrentVoiceBank.FiringRocket
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 EA 4B 00 00 00 01 EA 4B 00 00 
			//break
			06 A8 10

		//case 24:
		0A 92 05 24 18

			//Cue = CurrentVoiceBank.GhostModeActivated
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E9 4B 00 00 00 01 E9 4B 00 00 
			//break
			06 A8 10

		//case 25: // CollateralDamage
		0A C2 05 24 19

			//Cue = CurrentVoiceBank.CollateralDamage
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BC 4B 00 00 00 01 BC 4B 00 00 
			//break
			06 A8 10

		//case 26:
		0A F2 05 24 1A

			//Cue = CurrentVoiceBank.JetPackDeactivated
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E8 4B 00 00 00 01 E8 4B 00 00 
			//break
			06 A8 10

		//case 27:
		0A 22 06 24 1B

			//Cue = CurrentVoiceBank.ArcThrower
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E7 4B 00 00 00 01 E7 4B 00 00 
			//break
			06 A8 10

		//case 28:
		0A 52 06 24 1C

			//Cue = CurrentVoiceBank.RepairSHIV
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E6 4B 00 00 00 01 E6 4B 00 00 
			//break
			06 A8 10

		//case 29:
		0A 82 06 24 1D

			//Cue = CurrentVoiceBank.Kill
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E5 4B 00 00 00 01 E5 4B 00 00 
			//break
			06 A8 10

		//case 30:
		0A B2 06 24 1E

			//Cue = CurrentVoiceBank.MultiKill
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E4 4B 00 00 00 01 E4 4B 00 00 
			//break
			06 A8 10

		//case 31:
		0A E2 06 24 1F

			//Cue = CurrentVoiceBank.Missed
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E3 4B 00 00 00 01 E3 4B 00 00 
			//break
			06 A8 10

		//case 32:
		0A 12 07 24 20

			//Cue = CurrentVoiceBank.TargetSpotted
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E2 4B 00 00 00 01 E2 4B 00 00 
			//break
			06 A8 10

		//case 33:
		0A 42 07 24 21

			//Cue = CurrentVoiceBank.TargetSpottedHidden
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E1 4B 00 00 00 01 E1 4B 00 00 
			//break
			06 A8 10

		//case 34:
		0A 72 07 24 22

			//Cue = CurrentVoiceBank.HeardSomething
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 E0 4B 00 00 00 01 E0 4B 00 00 
			//break
			06 A8 10

		//case 35:
		0A A2 07 24 23

			//Cue = CurrentVoiceBank.TakingFire
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DF 4B 00 00 00 01 DF 4B 00 00 
			//break
			06 A8 10

		//case 36:
		0A D2 07 24 24

			//Cue = CurrentVoiceBank.FriendlyKilled
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DE 4B 00 00 00 01 DE 4B 00 00 
			//break
			06 A8 10

		//case 37:
		0A 02 08 24 25

			//Cue = CurrentVoiceBank.Panic
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DD 4B 00 00 00 01 DD 4B 00 00 
			//break
			06 A8 10

		//case 38:
		0A 32 08 24 26

			//Cue = CurrentVoiceBank.PanickedBreathing
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DC 4B 00 00 00 01 DC 4B 00 00 
			//break
			06 A8 10

		//case 39:
		0A 62 08 24 27

			//Cue = CurrentVoiceBank.Wounded
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DB 4B 00 00 00 01 DB 4B 00 00 
			//break
			06 A8 10

		//case 40:
		0A 92 08 24 28

			//Cue = CurrentVoiceBank.Died
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 DA 4B 00 00 00 01 DA 4B 00 00 
			//break
			06 A8 10

		//case 41:
		0A C2 08 24 29

			//Cue = CurrentVoiceBank.Flanked
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D9 4B 00 00 00 01 D9 4B 00 00 
			//break
			06 A8 10

		//case 42:
		0A F2 08 24 2A

			//Cue = CurrentVoiceBank.Suppressed
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D8 4B 00 00 00 01 D8 4B 00 00 
			//break
			06 A8 10

		//case 43: //ElectroPulse
		0A 22 09 24 2B

			//Cue = CurrentVoiceBank.ElectroPulse
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BB 4B 00 00 00 01 BB 4B 00 00 
			//break
			06 A8 10

		//case 44:
		0A 52 09 24 2C

			//Cue = CurrentVoiceBank.PsiControlled
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D7 4B 00 00 00 01 D7 4B 00 00 
			//break
			06 A8 10

		//case 45:
		0A 82 09 24 2D

			//Cue = CurrentVoiceBank.Flamethrower
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BA 4B 00 00 00 01 BA 4B 00 00 
			//break
			06 A8 10

		//case 46:
		0A B2 09 24 2E

			//Cue = CurrentVoiceBank.JetBoots
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 B9 4B 00 00 00 01 B9 4B 00 00 
			//break
			06 A8 10

		//case 47:
		0A E2 09 24 2F

			//Cue = CurrentVoiceBank.KineticStrike
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 B8 4B 00 00 00 01 B8 4B 00 00 
			//break
			06 A8 10

		//case 48:
		0A 12 0A 24 30

			//Cue = CurrentVoiceBank.OneForAll
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 B7 4B 00 00 00 01 B7 4B 00 00 
			//break
			06 A8 10

		//case 49:
		0A 3F 0A 24 31

			//Cue = CurrentVoiceBank.MeldSpotted
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D5 4B 00 00 00 01 D5 4B 00 00 
			//break
			06 A8 10

		//case 50:
		0A 72 0A 24 32

			//Cue = CurrentVoiceBank.MeldCollected
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D4 4B 00 00 00 01 D4 4B 00 00 
			//break
			06 A8 10

		//case 51:
		0A A2 0A 24 33

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D6 4B 00 00 00 01 D6 4B 00 00 
			//break
			06 A8 10

		//case 52:
		0A D2 0A 24 34

			//Cue = CurrentVoiceBank.AlienRetreat
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D1 4B 00 00 00 01 D1 4B 00 00 
			//break
			06 A8 10

		//case 53:
		0A 02 0B 24 35

			//Cue = CurrentVoiceBank.AlienMoving
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D0 4B 00 00 00 01 D0 4B 00 00 
			//break
			06 A8 10

		//case 54:
		0A 32 0B 24 36

			//Cue = CurrentVoiceBank.AlienNotStunned
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CF 4B 00 00 00 01 CF 4B 00 00 
			//break
			06 A8 10

		//case 55:
		0A 62 0B 24 37

			//Cue = CurrentVoiceBank.AlienReinforcements
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CE 4B 00 00 00 01 CE 4B 00 00 
			//break
			06 A8 10

		//case 56:
		0A 92 0B 24 38

			//Cue = CurrentVoiceBank.AlienSighting
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CD 4B 00 00 00 01 CD 4B 00 00 
			//break
			06 A8 10

		//case 57:
		0A C2 0B 24 39

			//Cue = CurrentVoiceBank.RunAndGun
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D3 4B 00 00 00 01 D3 4B 00 00 
			//break
			06 A8 10

		//case 58:
		0A F2 0B 24 3A

			//Cue = CurrentVoiceBank.ProximityMine
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 B6 4B 00 00 00 01 B6 4B 00 00 
			//break
			06 A8 10

		//case 59: //PrecisionShot_DEPRECATED
		0A 22 0C 24 3B

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D6 4B 00 00 00 01 D6 4B 00 00 
			//break
			06 A8 10

		//case 60:
		0A 52 0C 24 3C

			//Cue = CurrentVoiceBank.DisablingShot
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CC 4B 00 00 00 01 CC 4B 00 00 
			//break
			06 A8 10

		//case 61: //Executioner_DEPRECATED
		0A 82 0C 24 3D

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D6 4B 00 00 00 01 D6 4B 00 00 
			//break
			06 A8 10

		//case 62: //DoubleTap_DEPRECATED
		0A B2 0C 24 3E

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D6 4B 00 00 00 01 D6 4B 00 00 
			//break
			06 A8 10

		//case 63: //InTheZone_DEPRECATED
		0A E2 0C 24 3F

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D6 4B 00 00 00 01 D6 4B 00 00 
			//break
			06 A8 10

		//case 64:
		0A 12 0D 24 40

			//Cue = CurrentVoiceBank.ShredderRocket
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CB 4B 00 00 00 01 CB 4B 00 00 
			//break
			06 A8 10

		//case 65: //HotPotato_DEPRECATED
		0A 42 0D 24 41

			//Cue = CurrentVoiceBank.ShredderRocket
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CB 4B 00 00 00 01 CB 4B 00 00 
			//break
			06 A8 10

		//case 66:
		0A 72 0D 24 42

			//Cue = CurrentVoiceBank.PsionicsMindfray
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 CA 4B 00 00 00 01 CA 4B 00 00 
			//break
			06 A8 10

		//case 67:
		0A A2 0D 24 43

			//Cue = CurrentVoiceBank.PsionicsPanic
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C9 4B 00 00 00 01 C9 4B 00 00 
			//break
			06 A8 10

		//case 68:
		0A D2 0D 24 44

			//Cue = CurrentVoiceBank.PsionicsInspiration
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C8 4B 00 00 00 01 C8 4B 00 00 
			//break
			06 A8 10

		//case 69:
		0A 02 0E 24 45

			//Cue = CurrentVoiceBank.PsionicsTelekineticField
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C7 4B 00 00 00 01 C7 4B 00 00 
			//break
			06 A8 10

		//case 70:
		0A 32 0E 24 46

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D2 4B 00 00 00 01 D2 4B 00 00 
			//break
			06 A8 10

		//case 71: //GainingElevation_DEPRECATED
		0A 62 0E 24 47

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D2 4B 00 00 00 01 D2 4B 00 00 
			//break
			06 A8 10

		//case 72: //GenericResponse
		0A 92 0E 24 48

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D2 4B 00 00 00 01 D2 4B 00 00 
			//break
			06 A8 10

		//case 73:
		0A C2 0E 24 49

			//Cue = CurrentVoiceBank.SoldierControlled
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C6 4B 00 00 00 01 C6 4B 00 00 
			//break
			06 A8 10

		//case 74:
		0A F2 0E 24 4A

			//Cue = CurrentVoiceBank.StunnedAlien
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C5 4B 00 00 00 01 C5 4B 00 00 
			//break
			06 A8 10

		//case 75:
		0A 22 0F 24 4B

			//Cue = CurrentVoiceBank.Explosion
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C4 4B 00 00 00 01 C4 4B 00 00 
			//break
			06 A8 10

		//case 76:
		0A 52 0F 24 4C

			//Cue = CurrentVoiceBank.RocketScatter
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C3 4B 00 00 00 01 C3 4B 00 00 
			//break
			06 A8 10

		//case 77:
		0A 82 0F 24 4D

			//Cue = CurrentVoiceBank.PsiRift
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C2 4B 00 00 00 01 C2 4B 00 00 
			//break
			06 A8 10

		//case 78:
		0A B2 0F 24 4E

			//Cue = CurrentVoiceBank.Poisoned
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C1 4B 00 00 00 01 C1 4B 00 00 
			//break
			06 A8 10

		//case 79:
		0A E2 0F 24 4F

			//Cue = CurrentVoiceBank.HiddenMovement
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 C0 4B 00 00 00 01 C0 4B 00 00 
			//break
			06 A8 10

		//case 80:
		0A 12 10 24 50

			//Cue = CurrentVoiceBank.HiddenMovementVox
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BF 4B 00 00 00 01 BF 4B 00 00 
			//break
			06 A8 10

		//case 81: //CriticallyWounded_DEPRECATED
		0A 42 10 24 51

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 D2 4B 00 00 00 01 D2 4B 00 00 
			//break
			06 A8 10

		//case 82:
		0A 72 10 24 52

			//Cue = CurrentVoiceBank.ExaltChatter
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BE 4B 00 00 00 01 BE 4B 00 00 
			//break
			06 A8 10

		//case 83:
		0A A2 10 24 53

			//Cue = CurrentVoiceBank.Strangled
			0F 00 AF 4B 00 00 19 01 A7 4B 00 00 09 00 BD 4B 00 00 00 01 BD 4B 00 00 
			//break
			06 A8 10

		//default:
		0A FF FF 

			//break
			06 A8 10

//if(Cue != none)
07 EF 10 77 00 AF 4B 00 00 2A 16

	//Owner.PlaySound(Cue, true)
	19 00 B0 4B 00 00 18 00 00 00 00 00 00 1C 30 FC FF FF 00 AF 4B 00 00 27 4A 4A 4A 4A 16 

	//StreamNextVoiceBank(true)
	1C AE 4B 00 00 27 16 

//return
04 0B

//null ops
0b 0b 0b 0b 0b 0b 0b 0b 

//EOS
53

[/CODE]
[/AFTER_HEX] 

 

 

 

With Named references more similar to the PatchUPK format :

 

 

MODFILEVERSION=4
UPKFILE=XComGame.upk
GUID=1C 18 A1 1A 2B C3 34 4E 8B 2C 72 33 CD 16 7E 3E // XComGame_EW_patch3.upk
FUNCTION=PlaySoundForEvent@XComCharacterVoice
RESIZE=A70

// replace vanilla native GetSoundCue with switch/case to map ECharacterSpeech even to SoundCue

[BEFORE_HEX]
[HEADER]
5A 01 00 00 E2 00 00 00 
[/HEADER]
[CODE]
//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)
07 F0 00 84 19 19 2E 07 6A 00 00 19 12 20 35 FE FF FF 0A 00 91 F9 FF FF 00 1C D4 FB FF FF 16 0A 00 90 F9 FF FF 00 1B FA 3A 00 00 00 00 00 00 16 09 00 63 69 00 00 00 01 63 69 00 00 0A 00 24 6A 00 00 00 2D 01 24 6A 00 00 18 7E 00 19 19 19 2E E4 32 00 00 19 12 20 35 FE FF FF 0A 00 92 F9 FF FF 00 1C D5 FB FF FF 16 09 00 50 F9 FF FF 00 01 50 F9 FF FF 09 00 F0 32 00 00 00 01 F0 32 00 00 09 00 C9 B0 00 00 00 01 C9 B0 00 00 0A 00 A8 B4 00 00 00 2D 01 A8 B4 00 00 16 

	//return
	04 0B 

//Cue = GetSoundCue(Event)
0F 00 AF 4B 00 00 1C AC 4B 00 00 00 B1 4B 00 00 16 

//if(Cue != none)
07 57 01 77 00 AF 4B 00 00 2A 16 

	//Owner.PlaySound(Cue, true)
	19 00 B0 4B 00 00 18 00 00 00 00 00 00 1C 30 FC FF FF 00 AF 4B 00 00 27 4A 4A 4A 4A 16 

	//StreamNextVoiceBank(true)
	1C AE 4B 00 00 27 16 

//else
06 57 01 

//return
04 0B 

//EOS
53 
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
FA 10 00 00 52 0B 00 00 
[/HEADER]
[CODE]
//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)
07 F0 00 84 19 19 2E {|XComOnlineProfileSettings|} 19 12 20 {|Core:Engine@Engine|} 0A 00 {|Core:ReturnValue@GetEngine@Engine@Engine|} 00 1C {|Core:GetEngine@Engine@Engine|} 16 0A 00 {|Core:ReturnValue@GetProfileSettings@Engine@Engine|} 00 1B <|GetProfileSettings|> 00 00 00 00 16 09 00 {|Data@XComOnlineProfileSettings|} 00 01 {|Data@XComOnlineProfileSettings|} 0A 00 {|bDisableSoldierChatter@XComOnlineProfileSettingsDataBlob|} 00 2D 01 {|bDisableSoldierChatter@XComOnlineProfileSettingsDataBlob|} 18 7E 00 19 19 19 2E {|XComTacticalGRI|} 19 12 20 {|Core:Engine@Engine|} 0A 00 {|Core:ReturnValue@GetCurrentWorldInfo@Engine@Engine|} 00 1C {|Core:GetCurrentWorldInfo@Engine@Engine|} 16 09 00 {|Core:GRI@WorldInfo@Engine|} 00 01 {|Core:GRI@WorldInfo@Engine|} 09 00 {|m_kBattle@XComTacticalGRI|} 00 01 {|m_kBattle@XComTacticalGRI|} 09 00 {|m_kDesc@XGBattle|} 00 01 {|m_kDesc@XGBattle|} 0A 00 {|m_bDisableSoldierChatter@XGBattleDesc|} 00 2D 01 {|m_bDisableSoldierChatter@XGBattleDesc|} 16 

	//return
	04 0B 

//if (CurrentVoiceBank != none)
07 A8 10 77 01 {|CurrentVoiceBank@XComCharacterVoice|} 2A 16

	//switch(Event)
	05 {|Event@PlaySoundForEvent@XComCharacterVoice|} 00 00 {|Event@PlaySoundForEvent@XComCharacterVoice|} 

		//case 1:
		0A 42 01 24 01

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HunkerDown@XComCharacterVoiceBank|} 00 01 {|HunkerDown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 2:
		0A 72 01 24 02

			//Cue = CurrentVoiceBank.Reload
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Reload@XComCharacterVoiceBank|} 00 01 {|Reload@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 3:
		0A A2 01 24 03

			//Cue = CurrentVoiceBank.Overwatching
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Overwatching@XComCharacterVoiceBank|} 00 01 {|Overwatching@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 4:
		0A D2 01 24 04

			//Cue = CurrentVoiceBank.Moving
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Moving@XComCharacterVoiceBank|} 00 01 {|Moving@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 5:
		0A 02 02 24 05

			//Cue = CurrentVoiceBank.Dashing
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Dashing@XComCharacterVoiceBank|} 00 01 {|Dashing@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 6:
		0A 32 02 24 06

			//Cue = CurrentVoiceBank.JetPackMove
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|JetPackMove@XComCharacterVoiceBank|} 00 01 {|JetPackMove@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 7:
		0A 62 02 24 07

			//Cue = CurrentVoiceBank.LowAmmo
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|LowAmmo@XComCharacterVoiceBank|} 00 01 {|LowAmmo@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 8:
		0A 92 02 24 08

			//Cue = CurrentVoiceBank.OutOfAmmo
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|OutOfAmmo@XComCharacterVoiceBank|} 00 01 {|OutOfAmmo@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 9:
		0A C2 02 24 09

			//Cue = CurrentVoiceBank.Suppressing
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Suppressing@XComCharacterVoiceBank|} 00 01 {|Suppressing@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 10:
		0A F2 02 24 0A

			//Cue = CurrentVoiceBank.AreaSuppressing
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AreaSuppressing@XComCharacterVoiceBank|} 00 01 {|AreaSuppressing@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 11: // painting target
		0A 22 03 24 0B

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HunkerDown@XComCharacterVoiceBank|} 00 01 {|HunkerDown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 12: // destroying cover
		0A 52 03 24 0C

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HunkerDown@XComCharacterVoiceBank|} 00 01 {|HunkerDown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 13:
		0A 82 03 24 0D

			//Cue = CurrentVoiceBank.FlushingTarget
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|FlushingTarget@XComCharacterVoiceBank|} 00 01 {|FlushingTarget@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 14:
		0A B2 03 24 0E

			//Cue = CurrentVoiceBank.HealingAlly
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HealingAlly@XComCharacterVoiceBank|} 00 01 {|HealingAlly@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 15:
		0A E2 03 24 0F

			//Cue = CurrentVoiceBank.StabilizingAlly
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|StabilizingAlly@XComCharacterVoiceBank|} 00 01 {|StabilizingAlly@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 16:
		0A 12 04 24 10

			//Cue = CurrentVoiceBank.RevivingAlly
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|RevivingAlly@XComCharacterVoiceBank|} 00 01 {|RevivingAlly@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 17:
		0A 42 04 24 11

			//Cue = CurrentVoiceBank.CombatStim
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CombatStim@XComCharacterVoiceBank|} 00 01 {|CombatStim@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 18: // PrimingGrenade
		0A 72 04 24 12

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HunkerDown@XComCharacterVoiceBank|} 00 01 {|HunkerDown@XComCharacterVoiceBank|} 

			//break
			06 A8 10

		//case 19:
		0A A2 04 24 13

			//Cue = CurrentVoiceBank.FragOut
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|FragOut@XComCharacterVoiceBank|} 00 01 {|FragOut@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 20:
		0A D2 04 24 14

			//Cue = CurrentVoiceBank.SmokeGrenadeThrown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|SmokeGrenadeThrown@XComCharacterVoiceBank|} 00 01 {|SmokeGrenadeThrown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 21:
		0A 02 05 24 15

			//Cue = CurrentVoiceBank.SpyGrenadeThrown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|SpyGrenadeThrown@XComCharacterVoiceBank|} 00 01 {|SpyGrenadeThrown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 22: // FlashbangThrown
		0A 32 05 24 16

			//Cue = CurrentVoiceBank.HunkerDown
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HunkerDown@XComCharacterVoiceBank|} 00 01 {|HunkerDown@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 23:
		0A 62 05 24 17

			//Cue = CurrentVoiceBank.FiringRocket
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|FiringRocket@XComCharacterVoiceBank|} 00 01 {|FiringRocket@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 24:
		0A 92 05 24 18

			//Cue = CurrentVoiceBank.GhostModeActivated
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|GhostModeActivated@XComCharacterVoiceBank|} 00 01 {|GhostModeActivated@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 25: // CollateralDamage
		0A C2 05 24 19

			//Cue = CurrentVoiceBank.CollateralDamage
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CollateralDamage@XComCharacterVoiceBank|} 00 01 {|CollateralDamage@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 26:
		0A F2 05 24 1A

			//Cue = CurrentVoiceBank.JetPackDeactivated
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|JetPackDeactivated@XComCharacterVoiceBank|} 00 01 {|JetPackDeactivated@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 27:
		0A 22 06 24 1B

			//Cue = CurrentVoiceBank.ArcThrower
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ArcThrower@XComCharacterVoiceBank|} 00 01 {|ArcThrower@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 28:
		0A 52 06 24 1C

			//Cue = CurrentVoiceBank.RepairSHIV
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|RepairSHIV@XComCharacterVoiceBank|} 00 01 {|RepairSHIV@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 29:
		0A 82 06 24 1D

			//Cue = CurrentVoiceBank.Kill
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Kill@XComCharacterVoiceBank|} 00 01 {|Kill@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 30:
		0A B2 06 24 1E

			//Cue = CurrentVoiceBank.MultiKill
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|MultiKill@XComCharacterVoiceBank|} 00 01 {|MultiKill@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 31:
		0A E2 06 24 1F

			//Cue = CurrentVoiceBank.Missed
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Missed@XComCharacterVoiceBank|} 00 01 {|Missed@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 32:
		0A 12 07 24 20

			//Cue = CurrentVoiceBank.TargetSpotted
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|TargetSpotted@XComCharacterVoiceBank|} 00 01 {|TargetSpotted@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 33:
		0A 42 07 24 21

			//Cue = CurrentVoiceBank.TargetSpottedHidden
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|TargetSpottedHidden@XComCharacterVoiceBank|} 00 01 {|TargetSpottedHidden@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 34:
		0A 72 07 24 22

			//Cue = CurrentVoiceBank.HeardSomething
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HeardSomething@XComCharacterVoiceBank|} 00 01 {|HeardSomething@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 35:
		0A A2 07 24 23

			//Cue = CurrentVoiceBank.TakingFire
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|TakingFire@XComCharacterVoiceBank|} 00 01 {|TakingFire@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 36:
		0A D2 07 24 24

			//Cue = CurrentVoiceBank.FriendlyKilled
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|FriendlyKilled@XComCharacterVoiceBank|} 00 01 {|FriendlyKilled@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 37:
		0A 02 08 24 25

			//Cue = CurrentVoiceBank.Panic
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Panic@XComCharacterVoiceBank|} 00 01 {|Panic@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 38:
		0A 32 08 24 26

			//Cue = CurrentVoiceBank.PanickedBreathing
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PanickedBreathing@XComCharacterVoiceBank|} 00 01 {|PanickedBreathing@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 39:
		0A 62 08 24 27

			//Cue = CurrentVoiceBank.Wounded
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Wounded@XComCharacterVoiceBank|} 00 01 {|Wounded@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 40:
		0A 92 08 24 28

			//Cue = CurrentVoiceBank.Died
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Died@XComCharacterVoiceBank|} 00 01 {|Died@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 41:
		0A C2 08 24 29

			//Cue = CurrentVoiceBank.Flanked
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Flanked@XComCharacterVoiceBank|} 00 01 {|Flanked@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 42:
		0A F2 08 24 2A

			//Cue = CurrentVoiceBank.Suppressed
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Suppressed@XComCharacterVoiceBank|} 00 01 {|Suppressed@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 43: //ElectroPulse
		0A 22 09 24 2B

			//Cue = CurrentVoiceBank.ElectroPulse
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ElectroPulse@XComCharacterVoiceBank|} 00 01 {|ElectroPulse@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 44:
		0A 52 09 24 2C

			//Cue = CurrentVoiceBank.PsiControlled
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsiControlled@XComCharacterVoiceBank|} 00 01 {|PsiControlled@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 45:
		0A 82 09 24 2D

			//Cue = CurrentVoiceBank.Flamethrower
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Flamethrower@XComCharacterVoiceBank|} 00 01 {|Flamethrower@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 46:
		0A B2 09 24 2E

			//Cue = CurrentVoiceBank.JetBoots
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|JetBoots@XComCharacterVoiceBank|} 00 01 {|JetBoots@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 47:
		0A E2 09 24 2F

			//Cue = CurrentVoiceBank.KineticStrike
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|KineticStrike@XComCharacterVoiceBank|} 00 01 {|KineticStrike@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 48:
		0A 12 0A 24 30

			//Cue = CurrentVoiceBank.OneForAll
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|OneForAll@XComCharacterVoiceBank|} 00 01 {|OneForAll@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 49:
		0A 3F 0A 24 31

			//Cue = CurrentVoiceBank.MeldSpotted
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|MeldSpotted@XComCharacterVoiceBank|} 00 01 {|MeldSpotted@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 50:
		0A 72 0A 24 32

			//Cue = CurrentVoiceBank.MeldCollected
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|MeldCollected@XComCharacterVoiceBank|} 00 01 {|MeldCollected@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 51:
		0A A2 0A 24 33

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CivilianRescued@XComCharacterVoiceBank|} 00 01 {|CivilianRescued@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 52:
		0A D2 0A 24 34

			//Cue = CurrentVoiceBank.AlienRetreat
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AlienRetreat@XComCharacterVoiceBank|} 00 01 {|AlienRetreat@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 53:
		0A 02 0B 24 35

			//Cue = CurrentVoiceBank.AlienMoving
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AlienMoving@XComCharacterVoiceBank|} 00 01 {|AlienMoving@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 54:
		0A 32 0B 24 36

			//Cue = CurrentVoiceBank.AlienNotStunned
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AlienNotStunned@XComCharacterVoiceBank|} 00 01 {|AlienNotStunned@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 55:
		0A 62 0B 24 37

			//Cue = CurrentVoiceBank.AlienReinforcements
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AlienReinforcements@XComCharacterVoiceBank|} 00 01 {|AlienReinforcements@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 56:
		0A 92 0B 24 38

			//Cue = CurrentVoiceBank.AlienSighting
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|AlienSighting@XComCharacterVoiceBank|} 00 01 {|AlienSighting@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 57:
		0A C2 0B 24 39

			//Cue = CurrentVoiceBank.RunAndGun
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|RunAndGun@XComCharacterVoiceBank|} 00 01 {|RunAndGun@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 58:
		0A F2 0B 24 3A

			//Cue = CurrentVoiceBank.ProximityMine
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ProximityMine@XComCharacterVoiceBank|} 00 01 {|ProximityMine@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 59: //PrecisionShot_DEPRECATED
		0A 22 0C 24 3B

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CivilianRescued@XComCharacterVoiceBank|} 00 01 {|CivilianRescued@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 60:
		0A 52 0C 24 3C

			//Cue = CurrentVoiceBank.DisablingShot
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|DisablingShot@XComCharacterVoiceBank|} 00 01 {|DisablingShot@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 61: //Executioner_DEPRECATED
		0A 82 0C 24 3D

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CivilianRescued@XComCharacterVoiceBank|} 00 01 {|CivilianRescued@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 62: //DoubleTap_DEPRECATED
		0A B2 0C 24 3E

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CivilianRescued@XComCharacterVoiceBank|} 00 01 {|CivilianRescued@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 63: //InTheZone_DEPRECATED
		0A E2 0C 24 3F

			//Cue = CurrentVoiceBank.CivilianRescued
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|CivilianRescued@XComCharacterVoiceBank|} 00 01 {|CivilianRescued@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 64:
		0A 12 0D 24 40

			//Cue = CurrentVoiceBank.ShredderRocket
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ShredderRocket@XComCharacterVoiceBank|} 00 01 {|ShredderRocket@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 65: //HotPotato_DEPRECATED
		0A 42 0D 24 41

			//Cue = CurrentVoiceBank.ShredderRocket
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ShredderRocket@XComCharacterVoiceBank|} 00 01 {|ShredderRocket@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 66:
		0A 72 0D 24 42

			//Cue = CurrentVoiceBank.PsionicsMindfray
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsionicsMindfray@XComCharacterVoiceBank|} 00 01 {|PsionicsMindfray@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 67:
		0A A2 0D 24 43

			//Cue = CurrentVoiceBank.PsionicsPanic
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsionicsPanic@XComCharacterVoiceBank|} 00 01 {|PsionicsPanic@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 68:
		0A D2 0D 24 44

			//Cue = CurrentVoiceBank.PsionicsInspiration
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsionicsInspiration@XComCharacterVoiceBank|} 00 01 {|PsionicsInspiration@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 69:
		0A 02 0E 24 45

			//Cue = CurrentVoiceBank.PsionicsTelekineticField
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsionicsTelekineticField@XComCharacterVoiceBank|} 00 01 {|PsionicsTelekineticField@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 70:
		0A 32 0E 24 46

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|GrapplingHook@XComCharacterVoiceBank|} 00 01 {|GrapplingHook@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 71: //GainingElevation_DEPRECATED
		0A 62 0E 24 47

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|GrapplingHook@XComCharacterVoiceBank|} 00 01 {|GrapplingHook@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 72: //GenericResponse
		0A 92 0E 24 48

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|GrapplingHook@XComCharacterVoiceBank|} 00 01 {|GrapplingHook@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 73:
		0A C2 0E 24 49

			//Cue = CurrentVoiceBank.SoldierControlled
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|SoldierControlled@XComCharacterVoiceBank|} 00 01 {|SoldierControlled@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 74:
		0A F2 0E 24 4A

			//Cue = CurrentVoiceBank.StunnedAlien
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|StunnedAlien@XComCharacterVoiceBank|} 00 01 {|StunnedAlien@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 75:
		0A 22 0F 24 4B

			//Cue = CurrentVoiceBank.Explosion
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Explosion@XComCharacterVoiceBank|} 00 01 {|Explosion@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 76:
		0A 52 0F 24 4C

			//Cue = CurrentVoiceBank.RocketScatter
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|RocketScatter@XComCharacterVoiceBank|} 00 01 {|RocketScatter@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 77:
		0A 82 0F 24 4D

			//Cue = CurrentVoiceBank.PsiRift
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|PsiRift@XComCharacterVoiceBank|} 00 01 {|PsiRift@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 78:
		0A B2 0F 24 4E

			//Cue = CurrentVoiceBank.Poisoned
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Poisoned@XComCharacterVoiceBank|} 00 01 {|Poisoned@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 79:
		0A E2 0F 24 4F

			//Cue = CurrentVoiceBank.HiddenMovement
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HiddenMovement@XComCharacterVoiceBank|} 00 01 {|HiddenMovement@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 80:
		0A 12 10 24 50

			//Cue = CurrentVoiceBank.HiddenMovementVox
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|HiddenMovementVox@XComCharacterVoiceBank|} 00 01 {|HiddenMovementVox@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 81: //CriticallyWounded_DEPRECATED
		0A 42 10 24 51

			//Cue = CurrentVoiceBank.GrapplingHook
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|GrapplingHook@XComCharacterVoiceBank|} 00 01 {|GrapplingHook@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 82:
		0A 72 10 24 52

			//Cue = CurrentVoiceBank.ExaltChatter
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|ExaltChatter@XComCharacterVoiceBank|} 00 01 {|ExaltChatter@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//case 83:
		0A A2 10 24 53

			//Cue = CurrentVoiceBank.Strangled
			0F 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 19 01 {|CurrentVoiceBank@XComCharacterVoice|} 09 00 {|Strangled@XComCharacterVoiceBank|} 00 01 {|Strangled@XComCharacterVoiceBank|} 
			//break
			06 A8 10

		//default:
		0A FF FF 

			//break
			06 A8 10

//if(Cue != none)
07 EF 10 77 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 2A 16

	//Owner.PlaySound(Cue, true)
	19 00 {|Owner@PlaySoundForEvent@XComCharacterVoice|} 18 00 00 00 00 00 00 1C {|Core:PlaySound@Actor@Engine|} 00 {|Cue@PlaySoundForEvent@XComCharacterVoice|} 27 4A 4A 4A 4A 16 

	//StreamNextVoiceBank(true)
	1C {|StreamNextVoiceBank@XComCharacterVoice|} 27 16 

//return
04 0B

//null ops
0b 0b 0b 0b 0b 0b 0b 0b 

//EOS
53

[/CODE]
[/AFTER_HEX] 

 

 

 

I went ahead and included cases for all ECharacterSpeech events (even the deprecated ones) in case some future mod takes advantage of them.

 

I've tested that this code retains the existing vanilla voice functionality, although I don't have a new voice package to use to test it with.

Link to comment
Share on other sites

tracktwo, good catch! I didn't know XCOM code would reject any XCOM specific native code, though. And I thought the engine version handles such things, not licensee number. Interesting discovery, very interesting. But you're right: it's better not to touch licensee stuff.

 

Amineri, thanks, fixed it:

 

 

UPK_FILE=XComGame.upk
OBJECT=XComCharacterVoice.PlaySoundForEvent:AUTO
[REPLACEMENT_CODE]
//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)
07 [@VoicesEnabled]
84 19 19 2E <Class.XComOnlineProfileSettings>
19 12 20 <Engine.Engine> 0A 00 <Engine.Engine.GetEngine.ReturnValue> 00 1C <Engine.Engine.GetEngine> 16
0A 00 <Engine.Engine.GetProfileSettings.ReturnValue> 00 1B <GetProfileSettings> 16
09 00 <XComOnlineProfileSettings.Data> 00 01 <XComOnlineProfileSettings.Data>
0A 00 <XComOnlineProfileSettingsDataBlob.bDisableSoldierChatter> 00 2D 01 <XComOnlineProfileSettingsDataBlob.bDisableSoldierChatter>
18 7E 00
19 19 19 2E <Class.XComTacticalGRI>
19 12 20 <Engine.Engine>
0A 00 <Engine.Engine.GetCurrentWorldInfo.ReturnValue> 00 1C <Engine.Engine.GetCurrentWorldInfo> 16
09 00 <Engine.WorldInfo.GRI> 00 01 <Engine.WorldInfo.GRI>
09 00 <XComTacticalGRI.m_kBattle> 00 01 <XComTacticalGRI.m_kBattle>
09 00 <XGBattle.m_kDesc> 00 01 <XGBattle.m_kDesc>
0A 00 <XGBattleDesc.m_bDisableSoldierChatter> 00 2D 01 <XGBattleDesc.m_bDisableSoldierChatter> 16
//return
04 0B
[#VoicesEnabled]
//if (CurrentVoiceBank != none)
07 [@Play] 77 01 <@CurrentVoiceBank> 2A 16
//switch(Event)
05 <.Event> 00 00 <.Event>
//case 1:
0A [@case2] 24 <%b 1>
//Cue = CurrentVoiceBank.HunkerDown
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HunkerDown> 00 01 <XComCharacterVoiceBank.HunkerDown>
//break
06 [@Play]
[#case2]
//case 2:
0A [@case3] 24 <%b 2>
//Cue = CurrentVoiceBank.Reload
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Reload> 00 01 <XComCharacterVoiceBank.Reload>
//break
06 [@Play]
[#case3]
//case 3:
0A [@case4] 24 <%b 3>
//Cue = CurrentVoiceBank.Overwatching
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Overwatching> 00 01 <XComCharacterVoiceBank.Overwatching>
//break
06 [@Play]
[#case4]
//case 4:
0A [@case5] 24 <%b 4>
//Cue = CurrentVoiceBank.Moving
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Moving> 00 01 <XComCharacterVoiceBank.Moving>
//break
06 [@Play]
[#case5]
//case 5:
0A [@case6] 24 <%b 5>
//Cue = CurrentVoiceBank.Dashing
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Dashing> 00 01 <XComCharacterVoiceBank.Dashing>
//break
06 [@Play]
[#case6]
//case 6:
0A [@case7] 24 <%b 6>
//Cue = CurrentVoiceBank.JetPackMove
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetPackMove> 00 01 <XComCharacterVoiceBank.JetPackMove>
//break
06 [@Play]
[#case7]
//case 7:
0A [@case8] 24 <%b 7>
//Cue = CurrentVoiceBank.LowAmmo
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.LowAmmo> 00 01 <XComCharacterVoiceBank.LowAmmo>
//break
06 [@Play]
[#case8]
//case 8:
0A [@case9] 24 <%b 8>
//Cue = CurrentVoiceBank.OutOfAmmo
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.OutOfAmmo> 00 01 <XComCharacterVoiceBank.OutOfAmmo>
//break
06 [@Play]
[#case9]
//case 9:
0A [@case10] 24 <%b 9>
//Cue = CurrentVoiceBank.Suppressing
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Suppressing> 00 01 <XComCharacterVoiceBank.Suppressing>
//break
06 [@Play]
[#case10]
//case 10:
0A [@case13] 24 <%b 10>
//Cue = CurrentVoiceBank.AreaSuppressing
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AreaSuppressing> 00 01 <XComCharacterVoiceBank.AreaSuppressing>
//break
06 [@Play]
[#case13]
//case 13:
0A [@case14] 24 <%b 13>
//Cue = CurrentVoiceBank.FlushingTarget
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FlushingTarget> 00 01 <XComCharacterVoiceBank.FlushingTarget>
//break
06 [@Play]
[#case14]
//case 14:
0A [@case15] 24 <%b 14>
//Cue = CurrentVoiceBank.HealingAlly
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HealingAlly> 00 01 <XComCharacterVoiceBank.HealingAlly>
//break
06 [@Play]
[#case15]
//case 15:
0A [@case16] 24 <%b 15>
//Cue = CurrentVoiceBank.StabilizingAlly
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.StabilizingAlly> 00 01 <XComCharacterVoiceBank.StabilizingAlly>
//break
06 [@Play]
[#case16]
//case 16:
0A [@case17] 24 <%b 16>
//Cue = CurrentVoiceBank.RevivingAlly
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RevivingAlly> 00 01 <XComCharacterVoiceBank.RevivingAlly>
//break
06 [@Play]
[#case17]
//case 17:
0A [@case19] 24 <%b 17>
//Cue = CurrentVoiceBank.CombatStim
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CombatStim> 00 01 <XComCharacterVoiceBank.CombatStim>
//break
06 [@Play]
[#case19]
//case 19:
0A [@case20] 24 <%b 19>
//Cue = CurrentVoiceBank.FragOut
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FragOut> 00 01 <XComCharacterVoiceBank.FragOut>
//break
06 [@Play]
[#case20]
//case 20:
0A [@case21] 24 <%b 20>
//Cue = CurrentVoiceBank.SmokeGrenadeThrown
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SmokeGrenadeThrown> 00 01 <XComCharacterVoiceBank.SmokeGrenadeThrown>
//break
06 [@Play]
[#case21]
//case 21:
0A [@case23] 24 <%b 21>
//Cue = CurrentVoiceBank.SpyGrenadeThrown
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SpyGrenadeThrown> 00 01 <XComCharacterVoiceBank.SpyGrenadeThrown>
//break
06 [@Play]
[#case23]
//case 23:
0A [@case24] 24 <%b 23>
//Cue = CurrentVoiceBank.FiringRocket
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FiringRocket> 00 01 <XComCharacterVoiceBank.FiringRocket>
//break
06 [@Play]
[#case24]
//case 24:
0A [@case26] 24 <%b 24>
//Cue = CurrentVoiceBank.GhostModeActivated
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.GhostModeActivated> 00 01 <XComCharacterVoiceBank.GhostModeActivated>
//break
06 [@Play]
[#case26]
//case 26:
0A [@case27] 24 <%b 26>
//Cue = CurrentVoiceBank.JetPackDeactivated
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetPackDeactivated> 00 01 <XComCharacterVoiceBank.JetPackDeactivated>
//break
06 [@Play]
[#case27]
//case 27:
0A [@case28] 24 <%b 27>
//Cue = CurrentVoiceBank.ArcThrower
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ArcThrower> 00 01 <XComCharacterVoiceBank.ArcThrower>
//break
06 [@Play]
[#case28]
//case 28:
0A [@case29] 24 <%b 28>
//Cue = CurrentVoiceBank.RepairSHIV
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RepairSHIV> 00 01 <XComCharacterVoiceBank.RepairSHIV>
//break
06 [@Play]
[#case29]
//case 29:
0A [@case30] 24 <%b 29>
//Cue = CurrentVoiceBank.Kill
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Kill> 00 01 <XComCharacterVoiceBank.Kill>
//break
06 [@Play]
[#case30]
//case 30:
0A [@case31] 24 <%b 30>
//Cue = CurrentVoiceBank.MultiKill
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MultiKill> 00 01 <XComCharacterVoiceBank.MultiKill>
//break
06 [@Play]
[#case31]
//case 31:
0A [@case32] 24 <%b 31>
//Cue = CurrentVoiceBank.Missed
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Missed> 00 01 <XComCharacterVoiceBank.Missed>
//break
06 [@Play]
[#case32]
//case 32:
0A [@case33] 24 <%b 32>
//Cue = CurrentVoiceBank.TargetSpotted
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TargetSpotted> 00 01 <XComCharacterVoiceBank.TargetSpotted>
//break
06 [@Play]
[#case33]
//case 33:
0A [@case34] 24 <%b 33>
//Cue = CurrentVoiceBank.TargetSpottedHidden
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TargetSpottedHidden> 00 01 <XComCharacterVoiceBank.TargetSpottedHidden>
//break
06 [@Play]
[#case34]
//case 34:
0A [@case35] 24 <%b 34>
//Cue = CurrentVoiceBank.HeardSomething
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HeardSomething> 00 01 <XComCharacterVoiceBank.HeardSomething>
//break
06 [@Play]
[#case35]
//case 35:
0A [@case36] 24 <%b 35>
//Cue = CurrentVoiceBank.TakingFire
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TakingFire> 00 01 <XComCharacterVoiceBank.TakingFire>
//break
06 [@Play]
[#case36]
//case 36:
0A [@case37] 24 <%b 36>
//Cue = CurrentVoiceBank.FriendlyKilled
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FriendlyKilled> 00 01 <XComCharacterVoiceBank.FriendlyKilled>
//break
06 [@Play]
[#case37]
//case 37:
0A [@case38] 24 <%b 37>
//Cue = CurrentVoiceBank.Panic
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Panic> 00 01 <XComCharacterVoiceBank.Panic>
//break
06 [@Play]
[#case38]
//case 38:
0A [@case39] 24 <%b 38>
//Cue = CurrentVoiceBank.PanickedBreathing
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PanickedBreathing> 00 01 <XComCharacterVoiceBank.PanickedBreathing>
//break
06 [@Play]
[#case39]
//case 39:
0A [@case40] 24 <%b 39>
//Cue = CurrentVoiceBank.Wounded
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Wounded> 00 01 <XComCharacterVoiceBank.Wounded>
//break
06 [@Play]
[#case40]
//case 40:
0A [@case41] 24 <%b 40>
//Cue = CurrentVoiceBank.Died
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Died> 00 01 <XComCharacterVoiceBank.Died>
//break
06 [@Play]
[#case41]
//case 41:
0A [@case42] 24 <%b 41>
//Cue = CurrentVoiceBank.Flanked
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Flanked> 00 01 <XComCharacterVoiceBank.Flanked>
//break
06 [@Play]
[#case42]
//case 42:
0A [@case44] 24 <%b 42>
//Cue = CurrentVoiceBank.Suppressed
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Suppressed> 00 01 <XComCharacterVoiceBank.Suppressed>
//break
06 [@Play]
[#case44]
//case 44:
0A [@case51] 24 <%b 44>
//Cue = CurrentVoiceBank.PsiControlled
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsiControlled> 00 01 <XComCharacterVoiceBank.PsiControlled>
//break
06 [@Play]
[#case51]
//case 51:
0A [@case49] 24 <%b 51>
//Cue = CurrentVoiceBank.CivilianRescued
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CivilianRescued> 00 01 <XComCharacterVoiceBank.CivilianRescued>
//break
06 [@Play]
[#case49]
//case 49:
0A [@case50] 24 <%b 49>
//Cue = CurrentVoiceBank.MeldSpotted
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldSpotted> 00 01 <XComCharacterVoiceBank.MeldSpotted>
//break
06 [@Play]
[#case50]
//case 50:
0A [@case57] 24 <%b 50>
//Cue = CurrentVoiceBank.MeldCollected
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldCollected> 00 01 <XComCharacterVoiceBank.MeldCollected>
//break
06 [@Play]
[#case57]
//case 57:
0A [@case70] 24 <%b 57>
//Cue = CurrentVoiceBank.RunAndGun
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RunAndGun> 00 01 <XComCharacterVoiceBank.RunAndGun>
//break
06 [@Play]
[#case70]
//case 70:
0A [@case52] 24 <%b 70>
//Cue = CurrentVoiceBank.GrapplingHook
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.GrapplingHook> 00 01 <XComCharacterVoiceBank.GrapplingHook>
//break
06 [@Play]
[#case52]
//case 52:
0A [@case53] 24 <%b 52>
//Cue = CurrentVoiceBank.AlienRetreat
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienRetreat> 00 01 <XComCharacterVoiceBank.AlienRetreat>
//break
06 [@Play]
[#case53]
//case 53:
0A [@case54] 24 <%b 53>
//Cue = CurrentVoiceBank.AlienMoving
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienMoving> 00 01 <XComCharacterVoiceBank.AlienMoving>
//break
06 [@Play]
[#case54]
//case 54:
0A [@case55] 24 <%b 54>
//Cue = CurrentVoiceBank.AlienNotStunned
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienNotStunned> 00 01 <XComCharacterVoiceBank.AlienNotStunned>
//break
06 [@Play]
[#case55]
//case 55:
0A [@case56] 24 <%b 55>
//Cue = CurrentVoiceBank.AlienReinforcements
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienReinforcements> 00 01 <XComCharacterVoiceBank.AlienReinforcements>
//break
06 [@Play]
[#case56]
//case 56:
0A [@case60] 24 <%b 56>
//Cue = CurrentVoiceBank.AlienSighting
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienSighting> 00 01 <XComCharacterVoiceBank.AlienSighting>
//break
06 [@Play]
[#case60]
//case 60:
0A [@case64] 24 <%b 60>
//Cue = CurrentVoiceBank.DisablingShot
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.DisablingShot> 00 01 <XComCharacterVoiceBank.DisablingShot>
//break
06 [@Play]
[#case64]
//case 64:
0A [@case66] 24 <%b 64>
//Cue = CurrentVoiceBank.ShredderRocket
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ShredderRocket> 00 01 <XComCharacterVoiceBank.ShredderRocket>
//break
06 [@Play]
[#case66]
//case 66:
0A [@case67] 24 <%b 66>
//Cue = CurrentVoiceBank.PsionicsMindfray
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsMindfray> 00 01 <XComCharacterVoiceBank.PsionicsMindfray>
//break
06 [@Play]
[#case67]
//case 67:
0A [@case68] 24 <%b 67>
//Cue = CurrentVoiceBank.PsionicsPanic
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsPanic> 00 01 <XComCharacterVoiceBank.PsionicsPanic>
//break
06 [@Play]
[#case68]
//case 68:
0A [@case69] 24 <%b 68>
//Cue = CurrentVoiceBank.PsionicsInspiration
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsInspiration> 00 01 <XComCharacterVoiceBank.PsionicsInspiration>
//break
06 [@Play]
[#case69]
//case 69:
0A [@case73] 24 <%b 69>
//Cue = CurrentVoiceBank.PsionicsTelekineticField
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsTelekineticField> 00 01 <XComCharacterVoiceBank.PsionicsTelekineticField>
//break
06 [@Play]
[#case73]
//case 73:
0A [@case74] 24 <%b 73>
//Cue = CurrentVoiceBank.SoldierControlled
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SoldierControlled> 00 01 <XComCharacterVoiceBank.SoldierControlled>
//break
06 [@Play]
[#case74]
//case 74:
0A [@case75] 24 <%b 74>
//Cue = CurrentVoiceBank.StunnedAlien
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.StunnedAlien> 00 01 <XComCharacterVoiceBank.StunnedAlien>
//break
06 [@Play]
[#case75]
//case 75:
0A [@case76] 24 <%b 75>
//Cue = CurrentVoiceBank.Explosion
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Explosion> 00 01 <XComCharacterVoiceBank.Explosion>
//break
06 [@Play]
[#case76]
//case 76:
0A [@case77] 24 <%b 76>
//Cue = CurrentVoiceBank.RocketScatter
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RocketScatter> 00 01 <XComCharacterVoiceBank.RocketScatter>
//break
06 [@Play]
[#case77]
//case 77:
0A [@case78] 24 <%b 77>
//Cue = CurrentVoiceBank.PsiRift
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsiRift> 00 01 <XComCharacterVoiceBank.PsiRift>
//break
06 [@Play]
[#case78]
//case 78:
0A [@case79] 24 <%b 78>
//Cue = CurrentVoiceBank.Poisoned
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Poisoned> 00 01 <XComCharacterVoiceBank.Poisoned>
//break
06 [@Play]
[#case79]
//case 79:
0A [@case80] 24 <%b 79>
//Cue = CurrentVoiceBank.HiddenMovement
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HiddenMovement> 00 01 <XComCharacterVoiceBank.HiddenMovement>
//break
06 [@Play]
[#case80]
//case 80:
0A [@case82] 24 <%b 80>
//Cue = CurrentVoiceBank.HiddenMovementVox
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HiddenMovementVox> 00 01 <XComCharacterVoiceBank.HiddenMovementVox>
//break
06 [@Play]
[#case82]
//case 82:
0A [@case83] 24 <%b 82>
//Cue = CurrentVoiceBank.ExaltChatter
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ExaltChatter> 00 01 <XComCharacterVoiceBank.ExaltChatter>
//break
06 [@Play]
[#case83]
//case 83:
0A [@case25] 24 <%b 83>
//Cue = CurrentVoiceBank.Strangled
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Strangled> 00 01 <XComCharacterVoiceBank.Strangled>
//break
06 [@Play]
[#case25]
//case 25:
0A [@case43] 24 <%b 25>
//Cue = CurrentVoiceBank.CollateralDamage
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CollateralDamage> 00 01 <XComCharacterVoiceBank.CollateralDamage>
//break
06 [@Play]
[#case43]
//case 43:
0A [@case45] 24 <%b 43>
//Cue = CurrentVoiceBank.ElectroPulse
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ElectroPulse> 00 01 <XComCharacterVoiceBank.ElectroPulse>
//break
06 [@Play]
[#case45]
//case 45:
0A [@case46] 24 <%b 45>
//Cue = CurrentVoiceBank.Flamethrower
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Flamethrower> 00 01 <XComCharacterVoiceBank.Flamethrower>
//break
06 [@Play]
[#case46]
//case 46:
0A [@case47] 24 <%b 46>
//Cue = CurrentVoiceBank.JetBoots
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetBoots> 00 01 <XComCharacterVoiceBank.JetBoots>
//break
06 [@Play]
[#case47]
//case 47:
0A [@case48] 24 <%b 47>
//Cue = CurrentVoiceBank.KineticStrike
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.KineticStrike> 00 01 <XComCharacterVoiceBank.KineticStrike>
//break
06 [@Play]
[#case48]
//case 48:
0A [@case58] 24 <%b 48>
//Cue = CurrentVoiceBank.OneForAll
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.OneForAll> 00 01 <XComCharacterVoiceBank.OneForAll>
//break
06 [@Play]
[#case58]
//case 58:
0A [@default] 24 <%b 58>
//Cue = CurrentVoiceBank.ProximityMine
0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ProximityMine> 00 01 <XComCharacterVoiceBank.ProximityMine>
//break
06 [@Play]
[#default]
//default:
0A FF FF
//break
06 [@Play]
[#Play]
//if(Cue != none)
07 [@NoCue] 77 00 <.Cue> 2A 16
//Owner.PlaySound(Cue, true)
19 00 <.Owner> 18 00 <NullRef> 00 1C <Engine.Actor.PlaySound> 00 <.Cue> 27 4A 4A 4A 4A 16
//StreamNextVoiceBank(true)
1C <@StreamNextVoiceBank> 27 16
[#NoCue]
//return
04 0B
//EOS
53

 

 

I've tested that this code retains the existing vanilla voice functionality, although I don't have a new voice package to use to test it with.

Record yourself for testing purposes :wink: or use some weird free sounds. Edited by wghost81
Link to comment
Share on other sites

About unused sounds and new sounds.

 

There are number of entries, which have both SoundCue variable and event enum assigned, but not used. Those can be "activated" by calling UnitSpeak(EventEnum). For example, ability voices are triggered inside ApplyAbility with kAbility.m_kUnit.UnitSpeak(EventEnum) call.

 

We can also try to add completely new sounds for completely new events with mutators. This will require creating a new classes, which extend XComCharacterVoice and XComCharacterVoiceBank classes, using those classes instead of original ones to create sound packages and inserting appropriate UnitSpeak calls to appropriate places.

Link to comment
Share on other sites

Yeah, this looks to be purely a UE issue and probably not something specific to X-COM. I'd actually consider it a bug, I think, in that whether or not native code loads depends on the licensee number in the content package instead of the base game package where the native code actually resides. Having it depend on the base package licensee number would enable mods more easily. For all I know this might be fixed/changed in later UDKs, but that won't help much with XCOM.

 

I'm not sure if it's because I had set things up differently before with a saved game, but when I switched to the modified GetSoundCue my game always crashes in the alien turn. Have either of you tested a more complete mission using this modded function? It doesn't crash when I use my native version. I'll try it again and load a game from the strategy layer and see if that helps. It seems like it's crashing at about the time I hear mechtoid or sectopod stomping when I disable the script change, but that could be just a coincidence.

 

I've put together a sample voice + single bank of horrible text-to-speech clips. It sounds completely awful, and is too quiet compared to the other voices, but it's enough to get real content into the game to test with, if either of you would like to use it. It has entries for most events, but not quite all of them.

 

Finally, regarding unused sounds: I was thinking that too. I tried playing a few samples of the "Alien spotted" cue, that all the voice banks have but isn't used. The few variants I've heard would be great for certain long war events involving very large creatures. "Uh... yeah. We have a new contact"

Link to comment
Share on other sites

Thoughts about engine and licensee numbers: http://forums.nexusmods.com/index.php?/topic/1104408-r-d-xcom-map-alterations/?p=19149389

 

When you think of it, it becomes logical. There are hundreds of games, sharing the same engine version, but also using their own c++ code and adding a native serialized data to packages. Since licensee number appears to be game unique, it's a good way to distinguish base UE code and game specific code.

Link to comment
Share on other sites

Weird... it crashes consistently for me, going back to the strategic game or not. If I add an if check to either use the new switch or fall back to the old original GetSoundCue() call depending on whether or not the actor is a soldier, it no longer crashes for me. (I didn't bother renaming the Play label to something more appropriate).

 

Modded code:

 

 

 

UPK_FILE=XComGame.upk

OBJECT=XComCharacterVoice.PlaySoundForEvent:AUTO

[REPLACEMENT_CODE]

//if(XComOnlineProfileSettings(class'Engine'.static.GetEngine().GetProfileSettings()).Data.bDisableSoldierChatter || XComTacticalGRI(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kBattle.m_kDesc.m_bDisableSoldierChatter)

07 [@VoicesEnabled]

84 19 19 2E <Class.XComOnlineProfileSettings>

19 12 20 <Engine.Engine> 0A 00 <Engine.Engine.GetEngine.ReturnValue> 00 1C <Engine.Engine.GetEngine> 16

0A 00 <Engine.Engine.GetProfileSettings.ReturnValue> 00 1B <GetProfileSettings> 16

09 00 <XComOnlineProfileSettings.Data> 00 01 <XComOnlineProfileSettings.Data>

0A 00 <XComOnlineProfileSettingsDataBlob.bDisableSoldierChatter> 00 2D 01 <XComOnlineProfileSettingsDataBlob.bDisableSoldierChatter>

18 7E 00

19 19 19 2E <Class.XComTacticalGRI>

19 12 20 <Engine.Engine>

0A 00 <Engine.Engine.GetCurrentWorldInfo.ReturnValue> 00 1C <Engine.Engine.GetCurrentWorldInfo> 16

09 00 <Engine.WorldInfo.GRI> 00 01 <Engine.WorldInfo.GRI>

09 00 <XComTacticalGRI.m_kBattle> 00 01 <XComTacticalGRI.m_kBattle>

09 00 <XGBattle.m_kDesc> 00 01 <XGBattle.m_kDesc>

0A 00 <XGBattleDesc.m_bDisableSoldierChatter> 00 2D 01 <XGBattleDesc.m_bDisableSoldierChatter> 16

//return

04 0B

[#VoicesEnabled]

// if (XComHumanPawn(Owner) != none)

07 [@NonHuman] 77 2E <Class.XComHumanPawn> 00 <.Owner> 2A 16

//if (CurrentVoiceBank != none)

07 [@Play] 77 01 <@CurrentVoiceBank> 2A 16

//switch(Event)

05 <.Event> 00 00 <.Event>

//case 1:

0A [@case2] 24 <%b 1>

//Cue = CurrentVoiceBank.HunkerDown

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HunkerDown> 00 01 <XComCharacterVoiceBank.HunkerDown>

//break

06 [@Play]

[#case2]

//case 2:

0A [@case3] 24 <%b 2>

//Cue = CurrentVoiceBank.Reload

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Reload> 00 01 <XComCharacterVoiceBank.Reload>

//break

06 [@Play]

[#case3]

//case 3:

0A [@case4] 24 <%b 3>

//Cue = CurrentVoiceBank.Overwatching

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Overwatching> 00 01 <XComCharacterVoiceBank.Overwatching>

//break

06 [@Play]

[#case4]

//case 4:

0A [@case5] 24 <%b 4>

//Cue = CurrentVoiceBank.Moving

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Moving> 00 01 <XComCharacterVoiceBank.Moving>

//break

06 [@Play]

[#case5]

//case 5:

0A [@case6] 24 <%b 5>

//Cue = CurrentVoiceBank.Dashing

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Dashing> 00 01 <XComCharacterVoiceBank.Dashing>

//break

06 [@Play]

[#case6]

//case 6:

0A [@case7] 24 <%b 6>

//Cue = CurrentVoiceBank.JetPackMove

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetPackMove> 00 01 <XComCharacterVoiceBank.JetPackMove>

//break

06 [@Play]

[#case7]

//case 7:

0A [@case8] 24 <%b 7>

//Cue = CurrentVoiceBank.LowAmmo

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.LowAmmo> 00 01 <XComCharacterVoiceBank.LowAmmo>

//break

06 [@Play]

[#case8]

//case 8:

0A [@case9] 24 <%b 8>

//Cue = CurrentVoiceBank.OutOfAmmo

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.OutOfAmmo> 00 01 <XComCharacterVoiceBank.OutOfAmmo>

//break

06 [@Play]

[#case9]

//case 9:

0A [@case10] 24 <%b 9>

//Cue = CurrentVoiceBank.Suppressing

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Suppressing> 00 01 <XComCharacterVoiceBank.Suppressing>

//break

06 [@Play]

[#case10]

//case 10:

0A [@case13] 24 <%b 10>

//Cue = CurrentVoiceBank.AreaSuppressing

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AreaSuppressing> 00 01 <XComCharacterVoiceBank.AreaSuppressing>

//break

06 [@Play]

[#case13]

//case 13:

0A [@case14] 24 <%b 13>

//Cue = CurrentVoiceBank.FlushingTarget

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FlushingTarget> 00 01 <XComCharacterVoiceBank.FlushingTarget>

//break

06 [@Play]

[#case14]

//case 14:

0A [@case15] 24 <%b 14>

//Cue = CurrentVoiceBank.HealingAlly

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HealingAlly> 00 01 <XComCharacterVoiceBank.HealingAlly>

//break

06 [@Play]

[#case15]

//case 15:

0A [@case16] 24 <%b 15>

//Cue = CurrentVoiceBank.StabilizingAlly

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.StabilizingAlly> 00 01 <XComCharacterVoiceBank.StabilizingAlly>

//break

06 [@Play]

[#case16]

//case 16:

0A [@case17] 24 <%b 16>

//Cue = CurrentVoiceBank.RevivingAlly

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RevivingAlly> 00 01 <XComCharacterVoiceBank.RevivingAlly>

//break

06 [@Play]

[#case17]

//case 17:

0A [@case19] 24 <%b 17>

//Cue = CurrentVoiceBank.CombatStim

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CombatStim> 00 01 <XComCharacterVoiceBank.CombatStim>

//break

06 [@Play]

[#case19]

//case 19:

0A [@case20] 24 <%b 19>

//Cue = CurrentVoiceBank.FragOut

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FragOut> 00 01 <XComCharacterVoiceBank.FragOut>

//break

06 [@Play]

[#case20]

//case 20:

0A [@case21] 24 <%b 20>

//Cue = CurrentVoiceBank.SmokeGrenadeThrown

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SmokeGrenadeThrown> 00 01 <XComCharacterVoiceBank.SmokeGrenadeThrown>

//break

06 [@Play]

[#case21]

//case 21:

0A [@case23] 24 <%b 21>

//Cue = CurrentVoiceBank.SpyGrenadeThrown

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SpyGrenadeThrown> 00 01 <XComCharacterVoiceBank.SpyGrenadeThrown>

//break

06 [@Play]

[#case23]

//case 23:

0A [@case24] 24 <%b 23>

//Cue = CurrentVoiceBank.FiringRocket

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FiringRocket> 00 01 <XComCharacterVoiceBank.FiringRocket>

//break

06 [@Play]

[#case24]

//case 24:

0A [@case26] 24 <%b 24>

//Cue = CurrentVoiceBank.GhostModeActivated

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.GhostModeActivated> 00 01 <XComCharacterVoiceBank.GhostModeActivated>

//break

06 [@Play]

[#case26]

//case 26:

0A [@case27] 24 <%b 26>

//Cue = CurrentVoiceBank.JetPackDeactivated

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetPackDeactivated> 00 01 <XComCharacterVoiceBank.JetPackDeactivated>

//break

06 [@Play]

[#case27]

//case 27:

0A [@case28] 24 <%b 27>

//Cue = CurrentVoiceBank.ArcThrower

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ArcThrower> 00 01 <XComCharacterVoiceBank.ArcThrower>

//break

06 [@Play]

[#case28]

//case 28:

0A [@case29] 24 <%b 28>

//Cue = CurrentVoiceBank.RepairSHIV

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RepairSHIV> 00 01 <XComCharacterVoiceBank.RepairSHIV>

//break

06 [@Play]

[#case29]

//case 29:

0A [@case30] 24 <%b 29>

//Cue = CurrentVoiceBank.Kill

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Kill> 00 01 <XComCharacterVoiceBank.Kill>

//break

06 [@Play]

[#case30]

//case 30:

0A [@case31] 24 <%b 30>

//Cue = CurrentVoiceBank.MultiKill

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MultiKill> 00 01 <XComCharacterVoiceBank.MultiKill>

//break

06 [@Play]

[#case31]

//case 31:

0A [@case32] 24 <%b 31>

//Cue = CurrentVoiceBank.Missed

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Missed> 00 01 <XComCharacterVoiceBank.Missed>

//break

06 [@Play]

[#case32]

//case 32:

0A [@case33] 24 <%b 32>

//Cue = CurrentVoiceBank.TargetSpotted

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TargetSpotted> 00 01 <XComCharacterVoiceBank.TargetSpotted>

//break

06 [@Play]

[#case33]

//case 33:

0A [@case34] 24 <%b 33>

//Cue = CurrentVoiceBank.TargetSpottedHidden

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TargetSpottedHidden> 00 01 <XComCharacterVoiceBank.TargetSpottedHidden>

//break

06 [@Play]

[#case34]

//case 34:

0A [@case35] 24 <%b 34>

//Cue = CurrentVoiceBank.HeardSomething

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HeardSomething> 00 01 <XComCharacterVoiceBank.HeardSomething>

//break

06 [@Play]

[#case35]

//case 35:

0A [@case36] 24 <%b 35>

//Cue = CurrentVoiceBank.TakingFire

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.TakingFire> 00 01 <XComCharacterVoiceBank.TakingFire>

//break

06 [@Play]

[#case36]

//case 36:

0A [@case37] 24 <%b 36>

//Cue = CurrentVoiceBank.FriendlyKilled

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.FriendlyKilled> 00 01 <XComCharacterVoiceBank.FriendlyKilled>

//break

06 [@Play]

[#case37]

//case 37:

0A [@case38] 24 <%b 37>

//Cue = CurrentVoiceBank.Panic

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Panic> 00 01 <XComCharacterVoiceBank.Panic>

//break

06 [@Play]

[#case38]

//case 38:

0A [@case39] 24 <%b 38>

//Cue = CurrentVoiceBank.PanickedBreathing

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PanickedBreathing> 00 01 <XComCharacterVoiceBank.PanickedBreathing>

//break

06 [@Play]

[#case39]

//case 39:

0A [@case40] 24 <%b 39>

//Cue = CurrentVoiceBank.Wounded

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Wounded> 00 01 <XComCharacterVoiceBank.Wounded>

//break

06 [@Play]

[#case40]

//case 40:

0A [@case41] 24 <%b 40>

//Cue = CurrentVoiceBank.Died

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Died> 00 01 <XComCharacterVoiceBank.Died>

//break

06 [@Play]

[#case41]

//case 41:

0A [@case42] 24 <%b 41>

//Cue = CurrentVoiceBank.Flanked

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Flanked> 00 01 <XComCharacterVoiceBank.Flanked>

//break

06 [@Play]

[#case42]

//case 42:

0A [@case44] 24 <%b 42>

//Cue = CurrentVoiceBank.Suppressed

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Suppressed> 00 01 <XComCharacterVoiceBank.Suppressed>

//break

06 [@Play]

[#case44]

//case 44:

0A [@case51] 24 <%b 44>

//Cue = CurrentVoiceBank.PsiControlled

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsiControlled> 00 01 <XComCharacterVoiceBank.PsiControlled>

//break

06 [@Play]

[#case51]

//case 51:

0A [@case49] 24 <%b 51>

//Cue = CurrentVoiceBank.CivilianRescued

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CivilianRescued> 00 01 <XComCharacterVoiceBank.CivilianRescued>

//break

06 [@Play]

[#case49]

//case 49:

0A [@case49] 24 <%b 49>

//Cue = CurrentVoiceBank.MeldSpotted

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldSpotted> 00 01 <XComCharacterVoiceBank.MeldSpotted>

//break

06 [@Play]

[#case50]

//case 50:

0A [@case57] 24 <%b 50>

//Cue = CurrentVoiceBank.MeldCollected

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.MeldCollected> 00 01 <XComCharacterVoiceBank.MeldCollected>

//break

06 [@Play]

[#case57]

//case 57:

0A [@case70] 24 <%b 57>

//Cue = CurrentVoiceBank.RunAndGun

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RunAndGun> 00 01 <XComCharacterVoiceBank.RunAndGun>

//break

06 [@Play]

[#case70]

//case 70:

0A [@case52] 24 <%b 70>

//Cue = CurrentVoiceBank.GrapplingHook

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.GrapplingHook> 00 01 <XComCharacterVoiceBank.GrapplingHook>

//break

06 [@Play]

[#case52]

//case 52:

0A [@case53] 24 <%b 52>

//Cue = CurrentVoiceBank.AlienRetreat

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienRetreat> 00 01 <XComCharacterVoiceBank.AlienRetreat>

//break

06 [@Play]

[#case53]

//case 53:

0A [@case54] 24 <%b 53>

//Cue = CurrentVoiceBank.AlienMoving

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienMoving> 00 01 <XComCharacterVoiceBank.AlienMoving>

//break

06 [@Play]

[#case54]

//case 54:

0A [@case55] 24 <%b 54>

//Cue = CurrentVoiceBank.AlienNotStunned

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienNotStunned> 00 01 <XComCharacterVoiceBank.AlienNotStunned>

//break

06 [@Play]

[#case55]

//case 55:

0A [@case56] 24 <%b 55>

//Cue = CurrentVoiceBank.AlienReinforcements

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienReinforcements> 00 01 <XComCharacterVoiceBank.AlienReinforcements>

//break

06 [@Play]

[#case56]

//case 56:

0A [@case60] 24 <%b 56>

//Cue = CurrentVoiceBank.AlienSighting

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.AlienSighting> 00 01 <XComCharacterVoiceBank.AlienSighting>

//break

06 [@Play]

[#case60]

//case 60:

0A [@case64] 24 <%b 60>

//Cue = CurrentVoiceBank.DisablingShot

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.DisablingShot> 00 01 <XComCharacterVoiceBank.DisablingShot>

//break

06 [@Play]

[#case64]

//case 64:

0A [@case66] 24 <%b 64>

//Cue = CurrentVoiceBank.ShredderRocket

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ShredderRocket> 00 01 <XComCharacterVoiceBank.ShredderRocket>

//break

06 [@Play]

[#case66]

//case 66:

0A [@case67] 24 <%b 66>

//Cue = CurrentVoiceBank.PsionicsMindfray

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsMindfray> 00 01 <XComCharacterVoiceBank.PsionicsMindfray>

//break

06 [@Play]

[#case67]

//case 67:

0A [@case68] 24 <%b 67>

//Cue = CurrentVoiceBank.PsionicsPanic

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsPanic> 00 01 <XComCharacterVoiceBank.PsionicsPanic>

//break

06 [@Play]

[#case68]

//case 68:

0A [@case69] 24 <%b 68>

//Cue = CurrentVoiceBank.PsionicsInspiration

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsInspiration> 00 01 <XComCharacterVoiceBank.PsionicsInspiration>

//break

06 [@Play]

[#case69]

//case 69:

0A [@case73] 24 <%b 69>

//Cue = CurrentVoiceBank.PsionicsTelekineticField

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsionicsTelekineticField> 00 01 <XComCharacterVoiceBank.PsionicsTelekineticField>

//break

06 [@Play]

[#case73]

//case 73:

0A [@case74] 24 <%b 73>

//Cue = CurrentVoiceBank.SoldierControlled

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.SoldierControlled> 00 01 <XComCharacterVoiceBank.SoldierControlled>

//break

06 [@Play]

[#case74]

//case 74:

0A [@case75] 24 <%b 74>

//Cue = CurrentVoiceBank.StunnedAlien

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.StunnedAlien> 00 01 <XComCharacterVoiceBank.StunnedAlien>

//break

06 [@Play]

[#case75]

//case 75:

0A [@case76] 24 <%b 75>

//Cue = CurrentVoiceBank.Explosion

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Explosion> 00 01 <XComCharacterVoiceBank.Explosion>

//break

06 [@Play]

[#case76]

//case 76:

0A [@case77] 24 <%b 76>

//Cue = CurrentVoiceBank.RocketScatter

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.RocketScatter> 00 01 <XComCharacterVoiceBank.RocketScatter>

//break

06 [@Play]

[#case77]

//case 77:

0A [@case78] 24 <%b 77>

//Cue = CurrentVoiceBank.PsiRift

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.PsiRift> 00 01 <XComCharacterVoiceBank.PsiRift>

//break

06 [@Play]

[#case78]

//case 78:

0A [@case79] 24 <%b 78>

//Cue = CurrentVoiceBank.Poisoned

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Poisoned> 00 01 <XComCharacterVoiceBank.Poisoned>

//break

06 [@Play]

[#case79]

//case 79:

0A [@case80] 24 <%b 79>

//Cue = CurrentVoiceBank.HiddenMovement

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HiddenMovement> 00 01 <XComCharacterVoiceBank.HiddenMovement>

//break

06 [@Play]

[#case80]

//case 80:

0A [@case82] 24 <%b 80>

//Cue = CurrentVoiceBank.HiddenMovementVox

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.HiddenMovementVox> 00 01 <XComCharacterVoiceBank.HiddenMovementVox>

//break

06 [@Play]

[#case82]

//case 82:

0A [@case83] 24 <%b 82>

//Cue = CurrentVoiceBank.ExaltChatter

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ExaltChatter> 00 01 <XComCharacterVoiceBank.ExaltChatter>

//break

06 [@Play]

[#case83]

//case 83:

0A [@case25] 24 <%b 83>

//Cue = CurrentVoiceBank.Strangled

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Strangled> 00 01 <XComCharacterVoiceBank.Strangled>

//break

06 [@Play]

[#case25]

//case 25:

0A [@case43] 24 <%b 25>

//Cue = CurrentVoiceBank.CollateralDamage

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.CollateralDamage> 00 01 <XComCharacterVoiceBank.CollateralDamage>

//break

06 [@Play]

[#case43]

//case 43:

0A [@case45] 24 <%b 43>

//Cue = CurrentVoiceBank.ElectroPulse

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ElectroPulse> 00 01 <XComCharacterVoiceBank.ElectroPulse>

//break

06 [@Play]

[#case45]

//case 45:

0A [@case46] 24 <%b 45>

//Cue = CurrentVoiceBank.Flamethrower

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.Flamethrower> 00 01 <XComCharacterVoiceBank.Flamethrower>

//break

06 [@Play]

[#case46]

//case 46:

0A [@case47] 24 <%b 46>

//Cue = CurrentVoiceBank.JetBoots

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.JetBoots> 00 01 <XComCharacterVoiceBank.JetBoots>

//break

06 [@Play]

[#case47]

//case 47:

0A [@case48] 24 <%b 47>

//Cue = CurrentVoiceBank.KineticStrike

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.KineticStrike> 00 01 <XComCharacterVoiceBank.KineticStrike>

//break

06 [@Play]

[#case48]

//case 48:

0A [@case58] 24 <%b 48>

//Cue = CurrentVoiceBank.OneForAll

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.OneForAll> 00 01 <XComCharacterVoiceBank.OneForAll>

//break

06 [@Play]

[#case58]

//case 58:

0A [@default] 24 <%b 58>

//Cue = CurrentVoiceBank.ProximityMine

0F 00 <.Cue> 19 01 <@CurrentVoiceBank> 09 00 <XComCharacterVoiceBank.ProximityMine> 00 01 <XComCharacterVoiceBank.ProximityMine>

//break

06 [@Play]

[#default]

//default:

0A FF FF

//break

06 [@Play]

// } // if (XComHumanPawn(Owner) != none)

[#Play]

06 [@PlaySound]

[#NonHuman]

// Cue = GetSoundCue(event)

0F 00 <.Cue> 1C <XComCharacterVoice.GetSoundCue> 00 <.Event> 16

[#PlaySound]

//if(Cue != none)

07 [@NoCue] 77 00 <.Cue> 2A 16

//Owner.PlaySound(Cue, true)

19 00 <.Owner> 18 00 <NullRef> 00 1C <Engine.Actor.PlaySound> 00 <.Cue> 27 4A 4A 4A 4A 16

//StreamNextVoiceBank(true)

1C <@StreamNextVoiceBank> 27 16

[#NoCue]

//return

04 0B

//EOS

53

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...