4
4
using DataTool . Flag ;
5
5
using DataTool . Helper ;
6
6
using DataTool . JSON ;
7
+ using TankLib ;
7
8
using TankLib . STU . Types ;
8
9
using static DataTool . Helper . STUHelper ;
9
10
using static DataTool . Helper . IO ;
@@ -22,23 +23,37 @@ public void Parse(ICLIFlags toolFlags) {
22
23
23
24
var heroes = Helpers . GetHeroes ( ) ;
24
25
var npcHeroVoiceSets = new Dictionary < ulong , string > ( ) ;
25
- var heroMainVoiceSets = new HashSet < ulong > ( ) ;
26
+ var heroVoiceSets = new HashSet < ulong > ( ) ;
26
27
27
28
foreach ( var ( key , hero ) in heroes ) {
28
29
var voiceSet = GetInstance < STUVoiceSetComponent > ( hero . STU ? . m_gameplayEntity ) ? . m_voiceDefinition ;
30
+ if ( voiceSet == 0 ) continue ;
29
31
30
32
if ( hero . IsHero ) {
31
- heroMainVoiceSets . Add ( voiceSet ) ;
33
+ heroVoiceSets . Add ( voiceSet ) ;
32
34
continue ;
33
35
}
34
36
35
- if ( voiceSet > 0 ) {
36
- npcHeroVoiceSets . TryAdd ( voiceSet , hero . Name ) ;
37
+ npcHeroVoiceSets . TryAdd ( voiceSet , hero . Name ) ;
38
+ }
39
+
40
+ foreach ( var skinThemeGUID in Program . TrackedFiles [ 0xA6 ] ) {
41
+ var skinTheme = GetInstance < STUSkinBase > ( skinThemeGUID ) ;
42
+ if ( skinTheme == null ) continue ;
43
+ if ( skinTheme . m_runtimeOverrides == null ) continue ;
44
+
45
+ foreach ( var runtimeOverride in skinTheme . m_runtimeOverrides ) {
46
+ var overrideGUID = runtimeOverride . Value . m_3D884507 ;
47
+
48
+ if ( teResourceGUID . Type ( overrideGUID ) != 0x5F ) continue ;
49
+ // this skin overrides a voice set.
50
+ // its not an npc, dont need it
51
+ heroVoiceSets . Add ( overrideGUID ) ;
37
52
}
38
53
}
39
54
40
55
foreach ( var guid in Program . TrackedFiles [ 0x5F ] ) {
41
- if ( heroMainVoiceSets . Contains ( guid ) ) continue ;
56
+ if ( heroVoiceSets . Contains ( guid ) ) continue ;
42
57
43
58
var voiceSet = GetInstance < STUVoiceSet > ( guid ) ;
44
59
if ( voiceSet == null ) continue ;
0 commit comments