1
+ import bl2sdk
1
2
import sys
2
3
import random
3
4
14
15
'Backstab' ,
15
16
'BeLikeWater' ,
16
17
'BlightPhoenix' ,
17
- 'BloodSoakedShields' ,
18
18
'BurnBabyBurn' ,
19
19
'CounterStrike' ,
20
20
'CloseEnough' ,
21
21
'CloudKill' ,
22
22
'CookingUpTrouble' ,
23
23
'CrisisManagement' ,
24
24
'CriticalAscention' ,
25
- 'DeathFromAbove' ,
26
25
'DeathMark' ,
27
26
'DelusionalDamage' ,
28
27
'DoOrDie' ,
124
123
'BloodfilledGuns' ]
125
124
126
125
krieg_skills = ['BloodTrance' ,
127
- 'BuzzAxeBombardier ' ,
126
+ 'BuzzAxeBombadier ' ,
128
127
'FuelTheRampage' ,
129
128
'HellfireHalitosis' ,
130
129
'LightTheFuse' ,
179
178
salvador_skills = ['AintGotTimeToBleed' ,
180
179
'BusThatCantSlowDown' ,
181
180
'ComeAtMeBro' ,
182
- 'DivergentLikeness ' ,
181
+ 'DivergentLikness ' ,
183
182
'DoubleYourFun' ,
184
183
'DownNotOut' ,
185
184
'FistfulOfHurt' ,
195
194
'Discord' ,
196
195
'TypecastIconoclast' ,
197
196
'RationalAnarchist' ,
198
- 'WithClaws' ]
197
+ 'WithClaws' ,
198
+ 'BloodSoakedShields' ,
199
+ 'DeathFromAbove' ,]
199
200
200
201
bloodlust_skills = ['BloodOverdrive' ,
201
202
'BloodyRevival' ,
206
207
'Bloodsplosion' ]
207
208
208
209
hunters = {
209
- 'axton' : axton_skills ,
210
- 'salvador' : salvador_skills ,
211
- 'zero' : zer0_skills ,
212
- 'maya' : maya_skills ,
213
- 'krieg' : krieg_skills ,
214
- 'gaige' : gaige_skills
210
+ 'axton' : ( 'Soldier' , axton_skills ) ,
211
+ 'salvador' : ( 'Mercenary' , salvador_skills ) ,
212
+ 'zero' : ( 'Assassin' , zer0_skills ) ,
213
+ 'maya' : ( 'Siren' , maya_skills ) ,
214
+ 'krieg' : ( 'Lilac' , krieg_skills ) ,
215
+ 'gaige' : ( 'Tulip' , gaige_skills )
215
216
}
216
217
217
- def test_console ():
218
- console = bl2sdk .UObject .FindObjectByFullName ("WillowConsole WillowGameEngine.WillowGameViewportClient.WillowConsole" )
219
- s = bl2sdk .FString ("This is a test" )
220
- console .eventOutputText (s )
221
-
222
218
if 'loadedPackages' not in vars () and 'loadedPackages' not in globals ():
223
219
loadedPackages = False
224
220
@@ -229,10 +225,31 @@ def randomize_branches(rng, branches, valid_skills, skill_map):
229
225
skill = tier .Skills [x ]
230
226
if skill :
231
227
pos = rng .randint (0 , len (valid_skills ) - 1 )
232
- tier .Skills .__setitem__ (x , skill_map [valid_skills [pos ]])
228
+ tier .Skills .Set (x , skill_map [valid_skills [pos ]])
229
+ skill_name = valid_skills [pos ]
233
230
del valid_skills [pos ]
231
+ if skill_name == 'Anarchy' :
232
+ valid_skills += anarchy_skills
233
+ if skill_name == 'BloodyTwitch' or 'BloodfilledGuns' :
234
+ valid_skills = list (set (valid_skills + bloodlust_skills ))
235
+
236
+ def randomize_hunter (package_name , hunter_skills , skill_mapping , rng ):
237
+ branches = bl2sdk .UObject .FindObjectsContaining ("SkillTreeBranchDefinition GD_{}" .format (package_name ))
238
+
239
+ skill_branches = []
240
+ for branch in branches :
241
+ full_name = branch .GetFullName ()
242
+ if 'Default__' not in full_name and "ActionSkill" not in full_name :
243
+ skill_branches .append (branch )
244
+
245
+ randomize_branches (rng , skill_branches , base_skills + hunter_skills , skill_mapping )
246
+
247
+
248
+ def randomize (who , seed = None ):
249
+ if who .lower ().replace ('0' , 'o' ) not in hunters .keys () and who != 'all' :
250
+ print ("Unable to randomize, expected vault hunter name or 'all'" )
251
+ return
234
252
235
- def rando (seed = None ):
236
253
global loadedPackages
237
254
if not seed :
238
255
seed = random .randrange (sys .maxsize )
@@ -259,12 +276,9 @@ def rando(seed = None):
259
276
skill_mapping [skill .GetFullName ().split ('.' )[- 1 ]] = skill
260
277
skill .ObjectFlags .A |= 0x4000
261
278
262
- branches = bl2sdk .UObject .FindObjectsContaining ("SkillTreeBranchDefinition GD_Siren" )
263
-
264
- skill_branches = []
265
- for branch in branches :
266
- full_name = branch .GetFullName ()
267
- if 'Default__' not in full_name and "ActionSkill" not in full_name :
268
- skill_branches .append (branch )
269
-
270
- randomize_branches (rng , skill_branches , base_skills + maya_skills , skill_mapping )
279
+ if who != 'all' :
280
+ package_name , hunter_skills = hunters [who .lower ().replace ('0' , 'o' )]
281
+ randomize_hunter (package_name , hunter_skills , skill_mapping , rng )
282
+ else :
283
+ for package_name , hunter_skills in hunters .values ():
284
+ randomize_hunter (package_name , hunter_skills , skill_mapping , rng )
0 commit comments