mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 11:42:39 -06:00
3187 lines
84 KiB
Python
3187 lines
84 KiB
Python
|
from BattleBase import *
|
||
|
import random
|
||
|
from direct.directnotify import DirectNotifyGlobal
|
||
|
from otp.otpbase import OTPLocalizer
|
||
|
from toontown.toonbase import TTLocalizer
|
||
|
notify = DirectNotifyGlobal.directNotify.newCategory('SuitBattleGlobals')
|
||
|
debugAttackSequence = {}
|
||
|
|
||
|
def pickFromFreqList(freqList):
|
||
|
randNum = random.randint(0, 99)
|
||
|
count = 0
|
||
|
index = 0
|
||
|
level = None
|
||
|
for f in freqList:
|
||
|
count = count + f
|
||
|
if randNum < count:
|
||
|
level = index
|
||
|
break
|
||
|
index = index + 1
|
||
|
|
||
|
return level
|
||
|
|
||
|
|
||
|
def getActualFromRelativeLevel(name, relLevel):
|
||
|
data = SuitAttributes[name]
|
||
|
actualLevel = data['level'] + relLevel
|
||
|
return actualLevel
|
||
|
|
||
|
|
||
|
def getSuitVitals(name, level = -1):
|
||
|
data = SuitAttributes[name]
|
||
|
if level == -1:
|
||
|
level = pickFromFreqList(data['freq'])
|
||
|
dict = {}
|
||
|
dict['level'] = getActualFromRelativeLevel(name, level)
|
||
|
if dict['level'] == 11:
|
||
|
level = 0
|
||
|
dict['hp'] = data['hp'][level]
|
||
|
dict['def'] = data['def'][level]
|
||
|
attacks = data['attacks']
|
||
|
alist = []
|
||
|
for a in attacks:
|
||
|
adict = {}
|
||
|
name = a[0]
|
||
|
adict['name'] = name
|
||
|
adict['animName'] = SuitAttacks[name][0]
|
||
|
adict['hp'] = a[1][level]
|
||
|
adict['acc'] = a[2][level]
|
||
|
adict['freq'] = a[3][level]
|
||
|
adict['group'] = SuitAttacks[name][1]
|
||
|
alist.append(adict)
|
||
|
|
||
|
dict['attacks'] = alist
|
||
|
return dict
|
||
|
|
||
|
|
||
|
def pickSuitAttack(attacks, suitLevel):
|
||
|
attackNum = None
|
||
|
randNum = random.randint(0, 99)
|
||
|
notify.debug('pickSuitAttack: rolled %d' % randNum)
|
||
|
count = 0
|
||
|
index = 0
|
||
|
total = 0
|
||
|
for c in attacks:
|
||
|
total = total + c[3][suitLevel]
|
||
|
|
||
|
for c in attacks:
|
||
|
count = count + c[3][suitLevel]
|
||
|
if randNum < count:
|
||
|
attackNum = index
|
||
|
notify.debug('picking attack %d' % attackNum)
|
||
|
break
|
||
|
index = index + 1
|
||
|
|
||
|
configAttackName = simbase.config.GetString('attack-type', 'random')
|
||
|
if configAttackName == 'random':
|
||
|
return attackNum
|
||
|
elif configAttackName == 'sequence':
|
||
|
for i in xrange(len(attacks)):
|
||
|
if attacks[i] not in debugAttackSequence:
|
||
|
debugAttackSequence[attacks[i]] = 1
|
||
|
return i
|
||
|
|
||
|
return attackNum
|
||
|
else:
|
||
|
for i in xrange(len(attacks)):
|
||
|
if attacks[i][0] == configAttackName:
|
||
|
return i
|
||
|
|
||
|
return attackNum
|
||
|
return
|
||
|
|
||
|
|
||
|
def getSuitAttack(suitName, suitLevel, attackNum = -1):
|
||
|
attackChoices = SuitAttributes[suitName]['attacks']
|
||
|
if attackNum == -1:
|
||
|
notify.debug('getSuitAttack: picking attacking for %s' % suitName)
|
||
|
attackNum = pickSuitAttack(attackChoices, suitLevel)
|
||
|
attack = attackChoices[attackNum]
|
||
|
adict = {}
|
||
|
adict['suitName'] = suitName
|
||
|
name = attack[0]
|
||
|
adict['name'] = name
|
||
|
adict['id'] = SuitAttacks.keys().index(name)
|
||
|
adict['animName'] = SuitAttacks[name][0]
|
||
|
adict['hp'] = attack[1][suitLevel]
|
||
|
adict['acc'] = attack[2][suitLevel]
|
||
|
adict['freq'] = attack[3][suitLevel]
|
||
|
adict['group'] = SuitAttacks[name][1]
|
||
|
return adict
|
||
|
|
||
|
|
||
|
SuitAttributes = {'f': {'name': TTLocalizer.SuitFlunky,
|
||
|
'singularname': TTLocalizer.SuitFlunkyS,
|
||
|
'pluralname': TTLocalizer.SuitFlunkyP,
|
||
|
'level': 0,
|
||
|
'hp': (6,
|
||
|
12,
|
||
|
20,
|
||
|
30,
|
||
|
42),
|
||
|
'def': (2,
|
||
|
5,
|
||
|
10,
|
||
|
12,
|
||
|
15),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('PoundKey',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
4,
|
||
|
6),
|
||
|
(75,
|
||
|
75,
|
||
|
80,
|
||
|
80,
|
||
|
90),
|
||
|
(30,
|
||
|
35,
|
||
|
40,
|
||
|
45,
|
||
|
50)), ('Shred',
|
||
|
(3,
|
||
|
4,
|
||
|
5,
|
||
|
6,
|
||
|
7),
|
||
|
(50,
|
||
|
55,
|
||
|
60,
|
||
|
65,
|
||
|
70),
|
||
|
(10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30)), ('ClipOnTie',
|
||
|
(1,
|
||
|
1,
|
||
|
2,
|
||
|
2,
|
||
|
3),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(60,
|
||
|
50,
|
||
|
40,
|
||
|
30,
|
||
|
20)))},
|
||
|
'p': {'name': TTLocalizer.SuitPencilPusher,
|
||
|
'singularname': TTLocalizer.SuitPencilPusherS,
|
||
|
'pluralname': TTLocalizer.SuitPencilPusherP,
|
||
|
'level': 1,
|
||
|
'hp': (12,
|
||
|
20,
|
||
|
30,
|
||
|
42,
|
||
|
56),
|
||
|
'def': (5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (45,
|
||
|
50,
|
||
|
55,
|
||
|
60,
|
||
|
65),
|
||
|
'attacks': (('FountainPen',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
6,
|
||
|
9),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('RubOut',
|
||
|
(4,
|
||
|
5,
|
||
|
6,
|
||
|
8,
|
||
|
12),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('FingerWag',
|
||
|
(1,
|
||
|
2,
|
||
|
2,
|
||
|
3,
|
||
|
4),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(35,
|
||
|
30,
|
||
|
25,
|
||
|
20,
|
||
|
15)),
|
||
|
('WriteOff',
|
||
|
(4,
|
||
|
6,
|
||
|
8,
|
||
|
10,
|
||
|
12),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25)),
|
||
|
('FillWithLead',
|
||
|
(3,
|
||
|
4,
|
||
|
5,
|
||
|
6,
|
||
|
7),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'ym': {'name': TTLocalizer.SuitYesman,
|
||
|
'singularname': TTLocalizer.SuitYesmanS,
|
||
|
'pluralname': TTLocalizer.SuitYesmanP,
|
||
|
'level': 2,
|
||
|
'hp': (20,
|
||
|
30,
|
||
|
42,
|
||
|
56,
|
||
|
72),
|
||
|
'def': (10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (65,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
'attacks': (('RubberStamp',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
3,
|
||
|
4),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('RazzleDazzle',
|
||
|
(1,
|
||
|
1,
|
||
|
1,
|
||
|
1,
|
||
|
1),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(25,
|
||
|
20,
|
||
|
15,
|
||
|
10,
|
||
|
5)),
|
||
|
('Synergy',
|
||
|
(4,
|
||
|
5,
|
||
|
6,
|
||
|
7,
|
||
|
8),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25)),
|
||
|
('TeeOff',
|
||
|
(3,
|
||
|
3,
|
||
|
4,
|
||
|
4,
|
||
|
5),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)))},
|
||
|
'mm': {'name': TTLocalizer.SuitMicromanager,
|
||
|
'singularname': TTLocalizer.SuitMicromanagerS,
|
||
|
'pluralname': TTLocalizer.SuitMicromanagerP,
|
||
|
'level': 3,
|
||
|
'hp': (30,
|
||
|
42,
|
||
|
56,
|
||
|
72,
|
||
|
90),
|
||
|
'def': (15,
|
||
|
20,
|
||
|
25,
|
||
|
30,
|
||
|
35),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (70,
|
||
|
75,
|
||
|
80,
|
||
|
82,
|
||
|
85),
|
||
|
'attacks': (('Demotion',
|
||
|
(6,
|
||
|
8,
|
||
|
12,
|
||
|
15,
|
||
|
18),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('FingerWag',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)),
|
||
|
('FountainPen',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
8,
|
||
|
10),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('BrainStorm',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(5,
|
||
|
5,
|
||
|
5,
|
||
|
5,
|
||
|
5),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('BuzzWord',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'ds': {'name': TTLocalizer.SuitDownsizer,
|
||
|
'singularname': TTLocalizer.SuitDownsizerS,
|
||
|
'pluralname': TTLocalizer.SuitDownsizerP,
|
||
|
'level': 4,
|
||
|
'hp': (42,
|
||
|
56,
|
||
|
72,
|
||
|
90,
|
||
|
110),
|
||
|
'def': (20,
|
||
|
25,
|
||
|
30,
|
||
|
35,
|
||
|
40),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Canned',
|
||
|
(5,
|
||
|
6,
|
||
|
8,
|
||
|
10,
|
||
|
12),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('Downsize',
|
||
|
(8,
|
||
|
9,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(50,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('PinkSlip',
|
||
|
(4,
|
||
|
5,
|
||
|
6,
|
||
|
7,
|
||
|
8),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('Sacked',
|
||
|
(5,
|
||
|
6,
|
||
|
7,
|
||
|
8,
|
||
|
9),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)))},
|
||
|
'hh': {'name': TTLocalizer.SuitHeadHunter,
|
||
|
'singularname': TTLocalizer.SuitHeadHunterS,
|
||
|
'pluralname': TTLocalizer.SuitHeadHunterP,
|
||
|
'level': 5,
|
||
|
'hp': (56,
|
||
|
72,
|
||
|
90,
|
||
|
110,
|
||
|
132),
|
||
|
'def': (25,
|
||
|
30,
|
||
|
35,
|
||
|
40,
|
||
|
45),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('FountainPen',
|
||
|
(5,
|
||
|
6,
|
||
|
8,
|
||
|
10,
|
||
|
12),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('GlowerPower',
|
||
|
(7,
|
||
|
8,
|
||
|
10,
|
||
|
12,
|
||
|
13),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('HalfWindsor',
|
||
|
(8,
|
||
|
10,
|
||
|
12,
|
||
|
14,
|
||
|
16),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('HeadShrink',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
21),
|
||
|
(65,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('ReOrg',
|
||
|
(5,
|
||
|
8,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(65,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('Rolodex',
|
||
|
(6,
|
||
|
7,
|
||
|
8,
|
||
|
9,
|
||
|
10),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)))},
|
||
|
'cr': {'name': TTLocalizer.SuitCorporateRaider,
|
||
|
'singularname': TTLocalizer.SuitCorporateRaiderS,
|
||
|
'pluralname': TTLocalizer.SuitCorporateRaiderP,
|
||
|
'level': 6,
|
||
|
'hp': (72,
|
||
|
90,
|
||
|
110,
|
||
|
132,
|
||
|
156),
|
||
|
'def': (30,
|
||
|
35,
|
||
|
40,
|
||
|
45,
|
||
|
50),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Canned',
|
||
|
(6,
|
||
|
7,
|
||
|
8,
|
||
|
9,
|
||
|
10),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('EvilEye',
|
||
|
(12,
|
||
|
15,
|
||
|
18,
|
||
|
21,
|
||
|
24),
|
||
|
(60,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
90),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('PlayHardball',
|
||
|
(7,
|
||
|
8,
|
||
|
12,
|
||
|
15,
|
||
|
16),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('PowerTie',
|
||
|
(10,
|
||
|
12,
|
||
|
14,
|
||
|
16,
|
||
|
18),
|
||
|
(65,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)))},
|
||
|
'tbc': {'name': TTLocalizer.SuitTheBigCheese,
|
||
|
'singularname': TTLocalizer.SuitTheBigCheeseS,
|
||
|
'pluralname': TTLocalizer.SuitTheBigCheeseP,
|
||
|
'level': 7,
|
||
|
'hp': (90,
|
||
|
110,
|
||
|
132,
|
||
|
156,
|
||
|
200),
|
||
|
'def': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('CigarSmoke',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('FloodTheMarket',
|
||
|
(14,
|
||
|
16,
|
||
|
18,
|
||
|
20,
|
||
|
22),
|
||
|
(70,
|
||
|
75,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)),
|
||
|
('SongAndDance',
|
||
|
(14,
|
||
|
15,
|
||
|
17,
|
||
|
19,
|
||
|
20),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('TeeOff',
|
||
|
(8,
|
||
|
11,
|
||
|
14,
|
||
|
17,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50)))},
|
||
|
'cc': {'name': TTLocalizer.SuitColdCaller,
|
||
|
'singularname': TTLocalizer.SuitColdCallerS,
|
||
|
'pluralname': TTLocalizer.SuitColdCallerP,
|
||
|
'level': 0,
|
||
|
'hp': (6,
|
||
|
12,
|
||
|
20,
|
||
|
30,
|
||
|
42),
|
||
|
'def': (2,
|
||
|
5,
|
||
|
10,
|
||
|
12,
|
||
|
15),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('FreezeAssets',
|
||
|
(1,
|
||
|
1,
|
||
|
1,
|
||
|
1,
|
||
|
1),
|
||
|
(90,
|
||
|
90,
|
||
|
90,
|
||
|
90,
|
||
|
90),
|
||
|
(5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25)),
|
||
|
('PoundKey',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
4,
|
||
|
5),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('DoubleTalk',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
6,
|
||
|
8),
|
||
|
(50,
|
||
|
55,
|
||
|
60,
|
||
|
65,
|
||
|
70),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('HotAir',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
8,
|
||
|
10),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(45,
|
||
|
40,
|
||
|
35,
|
||
|
30,
|
||
|
25)))},
|
||
|
'tm': {'name': TTLocalizer.SuitTelemarketer,
|
||
|
'singularname': TTLocalizer.SuitTelemarketerS,
|
||
|
'pluralname': TTLocalizer.SuitTelemarketerP,
|
||
|
'level': 1,
|
||
|
'hp': (12,
|
||
|
20,
|
||
|
30,
|
||
|
42,
|
||
|
56),
|
||
|
'def': (5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (45,
|
||
|
50,
|
||
|
55,
|
||
|
60,
|
||
|
65),
|
||
|
'attacks': (('ClipOnTie',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
3,
|
||
|
4),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('PickPocket',
|
||
|
(1,
|
||
|
1,
|
||
|
1,
|
||
|
1,
|
||
|
1),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('Rolodex',
|
||
|
(4,
|
||
|
6,
|
||
|
7,
|
||
|
9,
|
||
|
12),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('DoubleTalk',
|
||
|
(4,
|
||
|
6,
|
||
|
7,
|
||
|
9,
|
||
|
12),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(40,
|
||
|
40,
|
||
|
40,
|
||
|
40,
|
||
|
40)))},
|
||
|
'nd': {'name': TTLocalizer.SuitNameDropper,
|
||
|
'singularname': TTLocalizer.SuitNameDropperS,
|
||
|
'pluralname': TTLocalizer.SuitNameDropperP,
|
||
|
'level': 2,
|
||
|
'hp': (20,
|
||
|
30,
|
||
|
42,
|
||
|
56,
|
||
|
72),
|
||
|
'def': (10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (65,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
'attacks': (('RazzleDazzle',
|
||
|
(4,
|
||
|
5,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('Rolodex',
|
||
|
(5,
|
||
|
6,
|
||
|
7,
|
||
|
10,
|
||
|
14),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(40,
|
||
|
40,
|
||
|
40,
|
||
|
40,
|
||
|
40)),
|
||
|
('Synergy',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('PickPocket',
|
||
|
(2,
|
||
|
2,
|
||
|
2,
|
||
|
2,
|
||
|
2),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)))},
|
||
|
'gh': {'name': TTLocalizer.SuitGladHander,
|
||
|
'singularname': TTLocalizer.SuitGladHanderS,
|
||
|
'pluralname': TTLocalizer.SuitGladHanderP,
|
||
|
'level': 3,
|
||
|
'hp': (30,
|
||
|
42,
|
||
|
56,
|
||
|
72,
|
||
|
90),
|
||
|
'def': (15,
|
||
|
20,
|
||
|
25,
|
||
|
30,
|
||
|
35),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (70,
|
||
|
75,
|
||
|
80,
|
||
|
82,
|
||
|
85),
|
||
|
'attacks': (('RubberStamp',
|
||
|
(4,
|
||
|
3,
|
||
|
3,
|
||
|
2,
|
||
|
1),
|
||
|
(90,
|
||
|
70,
|
||
|
50,
|
||
|
30,
|
||
|
10),
|
||
|
(40,
|
||
|
30,
|
||
|
20,
|
||
|
10,
|
||
|
5)),
|
||
|
('FountainPen',
|
||
|
(3,
|
||
|
3,
|
||
|
2,
|
||
|
1,
|
||
|
1),
|
||
|
(70,
|
||
|
60,
|
||
|
50,
|
||
|
40,
|
||
|
30),
|
||
|
(40,
|
||
|
30,
|
||
|
20,
|
||
|
10,
|
||
|
5)),
|
||
|
('Filibuster',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(30,
|
||
|
40,
|
||
|
50,
|
||
|
60,
|
||
|
70),
|
||
|
(10,
|
||
|
20,
|
||
|
30,
|
||
|
40,
|
||
|
45)),
|
||
|
('Schmooze',
|
||
|
(5,
|
||
|
7,
|
||
|
11,
|
||
|
15,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(10,
|
||
|
20,
|
||
|
30,
|
||
|
40,
|
||
|
45)))},
|
||
|
'ms': {'name': TTLocalizer.SuitMoverShaker,
|
||
|
'singularname': TTLocalizer.SuitMoverShakerS,
|
||
|
'pluralname': TTLocalizer.SuitMoverShakerP,
|
||
|
'level': 4,
|
||
|
'hp': (42,
|
||
|
56,
|
||
|
72,
|
||
|
90,
|
||
|
110),
|
||
|
'def': (20,
|
||
|
25,
|
||
|
30,
|
||
|
35,
|
||
|
40),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('BrainStorm',
|
||
|
(5,
|
||
|
6,
|
||
|
8,
|
||
|
10,
|
||
|
12),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('HalfWindsor',
|
||
|
(6,
|
||
|
9,
|
||
|
11,
|
||
|
13,
|
||
|
16),
|
||
|
(50,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Quake',
|
||
|
(9,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
21),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Shake',
|
||
|
(6,
|
||
|
8,
|
||
|
10,
|
||
|
12,
|
||
|
14),
|
||
|
(70,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('Tremor',
|
||
|
(5,
|
||
|
6,
|
||
|
7,
|
||
|
8,
|
||
|
9),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'tf': {'name': TTLocalizer.SuitTwoFace,
|
||
|
'singularname': TTLocalizer.SuitTwoFaceS,
|
||
|
'pluralname': TTLocalizer.SuitTwoFaceP,
|
||
|
'level': 5,
|
||
|
'hp': (56,
|
||
|
72,
|
||
|
90,
|
||
|
110,
|
||
|
132),
|
||
|
'def': (25,
|
||
|
30,
|
||
|
35,
|
||
|
40,
|
||
|
45),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('EvilEye',
|
||
|
(10,
|
||
|
12,
|
||
|
14,
|
||
|
16,
|
||
|
18),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('HangUp',
|
||
|
(7,
|
||
|
8,
|
||
|
10,
|
||
|
12,
|
||
|
13),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('RazzleDazzle',
|
||
|
(8,
|
||
|
10,
|
||
|
12,
|
||
|
14,
|
||
|
16),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('ReOrg',
|
||
|
(5,
|
||
|
8,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(65,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('RedTape',
|
||
|
(6,
|
||
|
7,
|
||
|
8,
|
||
|
9,
|
||
|
10),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'm': {'name': TTLocalizer.SuitTheMingler,
|
||
|
'singularname': TTLocalizer.SuitTheMinglerS,
|
||
|
'pluralname': TTLocalizer.SuitTheMinglerP,
|
||
|
'level': 6,
|
||
|
'hp': (72,
|
||
|
90,
|
||
|
110,
|
||
|
132,
|
||
|
156),
|
||
|
'def': (30,
|
||
|
35,
|
||
|
40,
|
||
|
45,
|
||
|
50),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('BuzzWord',
|
||
|
(10,
|
||
|
11,
|
||
|
13,
|
||
|
15,
|
||
|
16),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('ParadigmShift',
|
||
|
(12,
|
||
|
15,
|
||
|
18,
|
||
|
21,
|
||
|
24),
|
||
|
(60,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('PowerTrip',
|
||
|
(10,
|
||
|
13,
|
||
|
14,
|
||
|
15,
|
||
|
18),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('Schmooze',
|
||
|
(7,
|
||
|
8,
|
||
|
12,
|
||
|
15,
|
||
|
16),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('CigarSmoke',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('TeeOff',
|
||
|
(8,
|
||
|
9,
|
||
|
10,
|
||
|
11,
|
||
|
12),
|
||
|
(70,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
95),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)))},
|
||
|
'mh': {'name': TTLocalizer.SuitMrHollywood,
|
||
|
'singularname': TTLocalizer.SuitMrHollywoodS,
|
||
|
'pluralname': TTLocalizer.SuitMrHollywoodP,
|
||
|
'level': 7,
|
||
|
'hp': (90,
|
||
|
110,
|
||
|
132,
|
||
|
156,
|
||
|
200),
|
||
|
'def': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('PowerTrip',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50)), ('RazzleDazzle',
|
||
|
(8,
|
||
|
11,
|
||
|
14,
|
||
|
17,
|
||
|
20),
|
||
|
(70,
|
||
|
75,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50)))},
|
||
|
'sc': {'name': TTLocalizer.SuitShortChange,
|
||
|
'singularname': TTLocalizer.SuitShortChangeS,
|
||
|
'pluralname': TTLocalizer.SuitShortChangeP,
|
||
|
'level': 0,
|
||
|
'hp': (6,
|
||
|
12,
|
||
|
20,
|
||
|
30,
|
||
|
42),
|
||
|
'def': (2,
|
||
|
5,
|
||
|
10,
|
||
|
12,
|
||
|
15),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Watercooler',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
4,
|
||
|
6),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('BounceCheck',
|
||
|
(3,
|
||
|
5,
|
||
|
7,
|
||
|
9,
|
||
|
11),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('ClipOnTie',
|
||
|
(1,
|
||
|
1,
|
||
|
2,
|
||
|
2,
|
||
|
3),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('PickPocket',
|
||
|
(2,
|
||
|
2,
|
||
|
3,
|
||
|
4,
|
||
|
6),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(40,
|
||
|
40,
|
||
|
40,
|
||
|
40,
|
||
|
40)))},
|
||
|
'pp': {'name': TTLocalizer.SuitPennyPincher,
|
||
|
'singularname': TTLocalizer.SuitPennyPincherS,
|
||
|
'pluralname': TTLocalizer.SuitPennyPincherP,
|
||
|
'level': 1,
|
||
|
'hp': (12,
|
||
|
20,
|
||
|
30,
|
||
|
42,
|
||
|
56),
|
||
|
'def': (5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (45,
|
||
|
50,
|
||
|
55,
|
||
|
60,
|
||
|
65),
|
||
|
'attacks': (('BounceCheck',
|
||
|
(4,
|
||
|
5,
|
||
|
6,
|
||
|
8,
|
||
|
12),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(45,
|
||
|
45,
|
||
|
45,
|
||
|
45,
|
||
|
45)), ('FreezeAssets',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
6,
|
||
|
9),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)), ('FingerWag',
|
||
|
(1,
|
||
|
2,
|
||
|
3,
|
||
|
4,
|
||
|
6),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)))},
|
||
|
'tw': {'name': TTLocalizer.SuitTightwad,
|
||
|
'singularname': TTLocalizer.SuitTightwadS,
|
||
|
'pluralname': TTLocalizer.SuitTightwadP,
|
||
|
'level': 2,
|
||
|
'hp': (20,
|
||
|
30,
|
||
|
42,
|
||
|
56,
|
||
|
72),
|
||
|
'def': (10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (65,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
'attacks': (('Fired',
|
||
|
(3,
|
||
|
4,
|
||
|
5,
|
||
|
5,
|
||
|
6),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(75,
|
||
|
5,
|
||
|
5,
|
||
|
5,
|
||
|
5)),
|
||
|
('GlowerPower',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30)),
|
||
|
('FingerWag',
|
||
|
(3,
|
||
|
3,
|
||
|
4,
|
||
|
4,
|
||
|
5),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(5,
|
||
|
70,
|
||
|
5,
|
||
|
5,
|
||
|
5)),
|
||
|
('FreezeAssets',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(5,
|
||
|
5,
|
||
|
65,
|
||
|
5,
|
||
|
30)),
|
||
|
('BounceCheck',
|
||
|
(5,
|
||
|
6,
|
||
|
9,
|
||
|
13,
|
||
|
18),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(5,
|
||
|
5,
|
||
|
5,
|
||
|
60,
|
||
|
30)))},
|
||
|
'bc': {'name': TTLocalizer.SuitBeanCounter,
|
||
|
'singularname': TTLocalizer.SuitBeanCounterS,
|
||
|
'pluralname': TTLocalizer.SuitBeanCounterP,
|
||
|
'level': 3,
|
||
|
'hp': (30,
|
||
|
42,
|
||
|
56,
|
||
|
72,
|
||
|
90),
|
||
|
'def': (15,
|
||
|
20,
|
||
|
25,
|
||
|
30,
|
||
|
35),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (70,
|
||
|
75,
|
||
|
80,
|
||
|
82,
|
||
|
85),
|
||
|
'attacks': (('Audit',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Calculate',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('Tabulate',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('WriteOff',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)))},
|
||
|
'nc': {'name': TTLocalizer.SuitNumberCruncher,
|
||
|
'singularname': TTLocalizer.SuitNumberCruncherS,
|
||
|
'pluralname': TTLocalizer.SuitNumberCruncherP,
|
||
|
'level': 4,
|
||
|
'hp': (42,
|
||
|
56,
|
||
|
72,
|
||
|
90,
|
||
|
110),
|
||
|
'def': (20,
|
||
|
25,
|
||
|
30,
|
||
|
35,
|
||
|
40),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Audit',
|
||
|
(5,
|
||
|
6,
|
||
|
8,
|
||
|
10,
|
||
|
12),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('Calculate',
|
||
|
(6,
|
||
|
7,
|
||
|
9,
|
||
|
11,
|
||
|
13),
|
||
|
(50,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('Crunch',
|
||
|
(8,
|
||
|
9,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('Tabulate',
|
||
|
(5,
|
||
|
6,
|
||
|
7,
|
||
|
8,
|
||
|
9),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'mb': {'name': TTLocalizer.SuitMoneyBags,
|
||
|
'singularname': TTLocalizer.SuitMoneyBagsS,
|
||
|
'pluralname': TTLocalizer.SuitMoneyBagsP,
|
||
|
'level': 5,
|
||
|
'hp': (56,
|
||
|
72,
|
||
|
90,
|
||
|
110,
|
||
|
132),
|
||
|
'def': (25,
|
||
|
30,
|
||
|
35,
|
||
|
40,
|
||
|
45),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Liquidate',
|
||
|
(10,
|
||
|
12,
|
||
|
14,
|
||
|
16,
|
||
|
18),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)), ('MarketCrash',
|
||
|
(8,
|
||
|
10,
|
||
|
12,
|
||
|
14,
|
||
|
16),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(45,
|
||
|
45,
|
||
|
45,
|
||
|
45,
|
||
|
45)), ('PowerTie',
|
||
|
(6,
|
||
|
7,
|
||
|
8,
|
||
|
9,
|
||
|
10),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)))},
|
||
|
'ls': {'name': TTLocalizer.SuitLoanShark,
|
||
|
'singularname': TTLocalizer.SuitLoanSharkS,
|
||
|
'pluralname': TTLocalizer.SuitLoanSharkP,
|
||
|
'level': 6,
|
||
|
'hp': (72,
|
||
|
90,
|
||
|
110,
|
||
|
132,
|
||
|
156),
|
||
|
'def': (30,
|
||
|
35,
|
||
|
40,
|
||
|
45,
|
||
|
50),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('Bite',
|
||
|
(10,
|
||
|
11,
|
||
|
13,
|
||
|
15,
|
||
|
16),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('Chomp',
|
||
|
(12,
|
||
|
15,
|
||
|
18,
|
||
|
21,
|
||
|
24),
|
||
|
(60,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
90),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('PlayHardball',
|
||
|
(9,
|
||
|
11,
|
||
|
12,
|
||
|
13,
|
||
|
15),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('WriteOff',
|
||
|
(6,
|
||
|
8,
|
||
|
10,
|
||
|
12,
|
||
|
14),
|
||
|
(70,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)))},
|
||
|
'rb': {'name': TTLocalizer.SuitRobberBaron,
|
||
|
'singularname': TTLocalizer.SuitRobberBaronS,
|
||
|
'pluralname': TTLocalizer.SuitRobberBaronP,
|
||
|
'level': 7,
|
||
|
'hp': (90,
|
||
|
110,
|
||
|
132,
|
||
|
156,
|
||
|
200),
|
||
|
'def': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('PowerTrip',
|
||
|
(11,
|
||
|
14,
|
||
|
16,
|
||
|
18,
|
||
|
21),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)),
|
||
|
('CigarSmoke',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)), ('TeeOff',
|
||
|
(10,
|
||
|
12,
|
||
|
14,
|
||
|
16,
|
||
|
18),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
90),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)))},
|
||
|
'bf': {'name': TTLocalizer.SuitBottomFeeder,
|
||
|
'singularname': TTLocalizer.SuitBottomFeederS,
|
||
|
'pluralname': TTLocalizer.SuitBottomFeederP,
|
||
|
'level': 0,
|
||
|
'hp': (6,
|
||
|
12,
|
||
|
20,
|
||
|
30,
|
||
|
42),
|
||
|
'def': (2,
|
||
|
5,
|
||
|
10,
|
||
|
12,
|
||
|
15),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('RubberStamp',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
5,
|
||
|
6),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Shred',
|
||
|
(2,
|
||
|
4,
|
||
|
6,
|
||
|
8,
|
||
|
10),
|
||
|
(50,
|
||
|
55,
|
||
|
60,
|
||
|
65,
|
||
|
70),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Watercooler',
|
||
|
(3,
|
||
|
4,
|
||
|
5,
|
||
|
6,
|
||
|
7),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)),
|
||
|
('PickPocket',
|
||
|
(1,
|
||
|
1,
|
||
|
2,
|
||
|
2,
|
||
|
3),
|
||
|
(25,
|
||
|
30,
|
||
|
35,
|
||
|
40,
|
||
|
45),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50)))},
|
||
|
'b': {'name': TTLocalizer.SuitBloodsucker,
|
||
|
'singularname': TTLocalizer.SuitBloodsuckerS,
|
||
|
'pluralname': TTLocalizer.SuitBloodsuckerP,
|
||
|
'level': 1,
|
||
|
'hp': (12,
|
||
|
20,
|
||
|
30,
|
||
|
42,
|
||
|
56),
|
||
|
'def': (5,
|
||
|
10,
|
||
|
15,
|
||
|
20,
|
||
|
25),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (45,
|
||
|
50,
|
||
|
55,
|
||
|
60,
|
||
|
65),
|
||
|
'attacks': (('EvictionNotice',
|
||
|
(1,
|
||
|
2,
|
||
|
3,
|
||
|
3,
|
||
|
4),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('RedTape',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
6,
|
||
|
9),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Withdrawal',
|
||
|
(6,
|
||
|
8,
|
||
|
10,
|
||
|
12,
|
||
|
14),
|
||
|
(95,
|
||
|
95,
|
||
|
95,
|
||
|
95,
|
||
|
95),
|
||
|
(10,
|
||
|
10,
|
||
|
10,
|
||
|
10,
|
||
|
10)),
|
||
|
('Liquidate',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
6,
|
||
|
9),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(50,
|
||
|
50,
|
||
|
50,
|
||
|
50,
|
||
|
50)))},
|
||
|
'dt': {'name': TTLocalizer.SuitDoubleTalker,
|
||
|
'singularname': TTLocalizer.SuitDoubleTalkerS,
|
||
|
'pluralname': TTLocalizer.SuitDoubleTalkerP,
|
||
|
'level': 2,
|
||
|
'hp': (20,
|
||
|
30,
|
||
|
42,
|
||
|
56,
|
||
|
72),
|
||
|
'def': (10,
|
||
|
15,
|
||
|
20,
|
||
|
25,
|
||
|
30),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (65,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
'attacks': (('RubberStamp',
|
||
|
(1,
|
||
|
1,
|
||
|
1,
|
||
|
1,
|
||
|
1),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(5,
|
||
|
5,
|
||
|
5,
|
||
|
5,
|
||
|
5)),
|
||
|
('BounceCheck',
|
||
|
(1,
|
||
|
1,
|
||
|
1,
|
||
|
1,
|
||
|
1),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(5,
|
||
|
5,
|
||
|
5,
|
||
|
5,
|
||
|
5)),
|
||
|
('BuzzWord',
|
||
|
(1,
|
||
|
2,
|
||
|
3,
|
||
|
5,
|
||
|
6),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('DoubleTalk',
|
||
|
(6,
|
||
|
6,
|
||
|
9,
|
||
|
13,
|
||
|
18),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('Jargon',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)),
|
||
|
('MumboJumbo',
|
||
|
(3,
|
||
|
4,
|
||
|
6,
|
||
|
9,
|
||
|
12),
|
||
|
(50,
|
||
|
60,
|
||
|
70,
|
||
|
80,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)))},
|
||
|
'ac': {'name': TTLocalizer.SuitAmbulanceChaser,
|
||
|
'singularname': TTLocalizer.SuitAmbulanceChaserS,
|
||
|
'pluralname': TTLocalizer.SuitAmbulanceChaserP,
|
||
|
'level': 3,
|
||
|
'hp': (30,
|
||
|
42,
|
||
|
56,
|
||
|
72,
|
||
|
90),
|
||
|
'def': (15,
|
||
|
20,
|
||
|
25,
|
||
|
30,
|
||
|
35),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (65,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
85),
|
||
|
'attacks': (('Shake',
|
||
|
(4,
|
||
|
6,
|
||
|
9,
|
||
|
12,
|
||
|
15),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('RedTape',
|
||
|
(6,
|
||
|
8,
|
||
|
12,
|
||
|
15,
|
||
|
19),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('Rolodex',
|
||
|
(3,
|
||
|
4,
|
||
|
5,
|
||
|
6,
|
||
|
7),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('HangUp',
|
||
|
(2,
|
||
|
3,
|
||
|
4,
|
||
|
5,
|
||
|
6),
|
||
|
(75,
|
||
|
75,
|
||
|
75,
|
||
|
75,
|
||
|
75),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)))},
|
||
|
'bs': {'name': TTLocalizer.SuitBackStabber,
|
||
|
'singularname': TTLocalizer.SuitBackStabberS,
|
||
|
'pluralname': TTLocalizer.SuitBackStabberP,
|
||
|
'level': 4,
|
||
|
'hp': (42,
|
||
|
56,
|
||
|
72,
|
||
|
90,
|
||
|
110),
|
||
|
'def': (20,
|
||
|
25,
|
||
|
30,
|
||
|
35,
|
||
|
40),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('GuiltTrip',
|
||
|
(8,
|
||
|
11,
|
||
|
13,
|
||
|
15,
|
||
|
18),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)), ('RestrainingOrder',
|
||
|
(6,
|
||
|
7,
|
||
|
9,
|
||
|
11,
|
||
|
13),
|
||
|
(50,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
90),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)), ('CigarSmoke',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)), ('FingerWag',
|
||
|
(5,
|
||
|
6,
|
||
|
7,
|
||
|
8,
|
||
|
9),
|
||
|
(50,
|
||
|
55,
|
||
|
65,
|
||
|
75,
|
||
|
80),
|
||
|
(25,
|
||
|
25,
|
||
|
25,
|
||
|
25,
|
||
|
25)))},
|
||
|
'sd': {'name': TTLocalizer.SuitSpinDoctor,
|
||
|
'singularname': TTLocalizer.SuitSpinDoctorS,
|
||
|
'pluralname': TTLocalizer.SuitSpinDoctorP,
|
||
|
'level': 5,
|
||
|
'hp': (56,
|
||
|
72,
|
||
|
90,
|
||
|
110,
|
||
|
132),
|
||
|
'def': (25,
|
||
|
30,
|
||
|
35,
|
||
|
40,
|
||
|
45),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('ParadigmShift',
|
||
|
(9,
|
||
|
10,
|
||
|
13,
|
||
|
16,
|
||
|
17),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)),
|
||
|
('Quake',
|
||
|
(8,
|
||
|
10,
|
||
|
12,
|
||
|
14,
|
||
|
16),
|
||
|
(60,
|
||
|
65,
|
||
|
70,
|
||
|
75,
|
||
|
80),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Spin',
|
||
|
(10,
|
||
|
12,
|
||
|
15,
|
||
|
18,
|
||
|
20),
|
||
|
(70,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('ReOrg',
|
||
|
(5,
|
||
|
8,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(65,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('WriteOff',
|
||
|
(6,
|
||
|
7,
|
||
|
8,
|
||
|
9,
|
||
|
10),
|
||
|
(60,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)))},
|
||
|
'le': {'name': TTLocalizer.SuitLegalEagle,
|
||
|
'singularname': TTLocalizer.SuitLegalEagleS,
|
||
|
'pluralname': TTLocalizer.SuitLegalEagleP,
|
||
|
'level': 6,
|
||
|
'hp': (72,
|
||
|
90,
|
||
|
110,
|
||
|
132,
|
||
|
156),
|
||
|
'def': (30,
|
||
|
35,
|
||
|
40,
|
||
|
45,
|
||
|
50),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('EvilEye',
|
||
|
(10,
|
||
|
11,
|
||
|
13,
|
||
|
15,
|
||
|
16),
|
||
|
(60,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
90),
|
||
|
(20,
|
||
|
20,
|
||
|
20,
|
||
|
20,
|
||
|
20)),
|
||
|
('Jargon',
|
||
|
(7,
|
||
|
9,
|
||
|
11,
|
||
|
13,
|
||
|
15),
|
||
|
(60,
|
||
|
70,
|
||
|
75,
|
||
|
80,
|
||
|
90),
|
||
|
(15,
|
||
|
15,
|
||
|
15,
|
||
|
15,
|
||
|
15)),
|
||
|
('Legalese',
|
||
|
(11,
|
||
|
13,
|
||
|
16,
|
||
|
19,
|
||
|
21),
|
||
|
(55,
|
||
|
65,
|
||
|
75,
|
||
|
85,
|
||
|
95),
|
||
|
(35,
|
||
|
35,
|
||
|
35,
|
||
|
35,
|
||
|
35)),
|
||
|
('PeckingOrder',
|
||
|
(12,
|
||
|
15,
|
||
|
17,
|
||
|
19,
|
||
|
22),
|
||
|
(70,
|
||
|
75,
|
||
|
80,
|
||
|
85,
|
||
|
95),
|
||
|
(30,
|
||
|
30,
|
||
|
30,
|
||
|
30,
|
||
|
30)))},
|
||
|
'bw': {'name': TTLocalizer.SuitBigWig,
|
||
|
'singularname': TTLocalizer.SuitBigWigS,
|
||
|
'pluralname': TTLocalizer.SuitBigWigP,
|
||
|
'level': 7,
|
||
|
'hp': (90,
|
||
|
110,
|
||
|
132,
|
||
|
156,
|
||
|
200),
|
||
|
'def': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'freq': (50,
|
||
|
30,
|
||
|
10,
|
||
|
5,
|
||
|
5),
|
||
|
'acc': (35,
|
||
|
40,
|
||
|
45,
|
||
|
50,
|
||
|
55),
|
||
|
'attacks': (('PowerTrip',
|
||
|
(10,
|
||
|
11,
|
||
|
13,
|
||
|
15,
|
||
|
16),
|
||
|
(75,
|
||
|
80,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)), ('ThrowBook',
|
||
|
(14,
|
||
|
16,
|
||
|
18,
|
||
|
20,
|
||
|
22),
|
||
|
(70,
|
||
|
75,
|
||
|
85,
|
||
|
90,
|
||
|
95),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)), ('FingerWag',
|
||
|
(13,
|
||
|
15,
|
||
|
17,
|
||
|
19,
|
||
|
21),
|
||
|
(80,
|
||
|
85,
|
||
|
85,
|
||
|
85,
|
||
|
90),
|
||
|
(33,
|
||
|
33,
|
||
|
33,
|
||
|
33,
|
||
|
33)))}}
|
||
|
ATK_TGT_UNKNOWN = 1
|
||
|
ATK_TGT_SINGLE = 2
|
||
|
ATK_TGT_GROUP = 3
|
||
|
SuitAttacks = {'Audit': ('phone', ATK_TGT_SINGLE),
|
||
|
'Bite': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'BounceCheck': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'BrainStorm': ('effort', ATK_TGT_SINGLE),
|
||
|
'BuzzWord': ('speak', ATK_TGT_SINGLE),
|
||
|
'Calculate': ('phone', ATK_TGT_SINGLE),
|
||
|
'Canned': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'Chomp': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'CigarSmoke': ('cigar-smoke', ATK_TGT_SINGLE),
|
||
|
'ClipOnTie': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'Crunch': ('throw-object', ATK_TGT_SINGLE),
|
||
|
'Demotion': ('magic1', ATK_TGT_SINGLE),
|
||
|
'DoubleTalk': ('speak', ATK_TGT_SINGLE),
|
||
|
'Downsize': ('magic2', ATK_TGT_SINGLE),
|
||
|
'EvictionNotice': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'EvilEye': ('glower', ATK_TGT_SINGLE),
|
||
|
'Filibuster': ('speak', ATK_TGT_SINGLE),
|
||
|
'FillWithLead': ('pencil-sharpener', ATK_TGT_SINGLE),
|
||
|
'FingerWag': ('finger-wag', ATK_TGT_SINGLE),
|
||
|
'Fired': ('magic2', ATK_TGT_SINGLE),
|
||
|
'FiveOClockShadow': ('glower', ATK_TGT_SINGLE),
|
||
|
'FloodTheMarket': ('glower', ATK_TGT_SINGLE),
|
||
|
'FountainPen': ('pen-squirt', ATK_TGT_SINGLE),
|
||
|
'FreezeAssets': ('glower', ATK_TGT_SINGLE),
|
||
|
'Gavel': ('gavel', ATK_TGT_SINGLE),
|
||
|
'GlowerPower': ('glower', ATK_TGT_SINGLE),
|
||
|
'GuiltTrip': ('magic1', ATK_TGT_GROUP),
|
||
|
'HalfWindsor': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'HangUp': ('phone', ATK_TGT_SINGLE),
|
||
|
'HeadShrink': ('magic1', ATK_TGT_SINGLE),
|
||
|
'HotAir': ('speak', ATK_TGT_SINGLE),
|
||
|
'Jargon': ('speak', ATK_TGT_SINGLE),
|
||
|
'Legalese': ('speak', ATK_TGT_SINGLE),
|
||
|
'Liquidate': ('magic1', ATK_TGT_SINGLE),
|
||
|
'MarketCrash': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'MumboJumbo': ('speak', ATK_TGT_SINGLE),
|
||
|
'ParadigmShift': ('magic2', ATK_TGT_GROUP),
|
||
|
'PeckingOrder': ('throw-object', ATK_TGT_SINGLE),
|
||
|
'PickPocket': ('pickpocket', ATK_TGT_SINGLE),
|
||
|
'PinkSlip': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'PlayHardball': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'PoundKey': ('phone', ATK_TGT_SINGLE),
|
||
|
'PowerTie': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'PowerTrip': ('magic1', ATK_TGT_GROUP),
|
||
|
'Quake': ('quick-jump', ATK_TGT_GROUP),
|
||
|
'RazzleDazzle': ('smile', ATK_TGT_SINGLE),
|
||
|
'RedTape': ('throw-object', ATK_TGT_SINGLE),
|
||
|
'ReOrg': ('magic3', ATK_TGT_SINGLE),
|
||
|
'RestrainingOrder': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'Rolodex': ('roll-o-dex', ATK_TGT_SINGLE),
|
||
|
'RubberStamp': ('rubber-stamp', ATK_TGT_SINGLE),
|
||
|
'RubOut': ('hold-eraser', ATK_TGT_SINGLE),
|
||
|
'Sacked': ('throw-paper', ATK_TGT_SINGLE),
|
||
|
'SandTrap': ('golf-club-swing', ATK_TGT_SINGLE),
|
||
|
'Schmooze': ('speak', ATK_TGT_SINGLE),
|
||
|
'Shake': ('stomp', ATK_TGT_GROUP),
|
||
|
'Shred': ('shredder', ATK_TGT_SINGLE),
|
||
|
'SongAndDance': ('song-and-dance', ATK_TGT_SINGLE),
|
||
|
'Spin': ('magic3', ATK_TGT_SINGLE),
|
||
|
'Synergy': ('magic3', ATK_TGT_GROUP),
|
||
|
'Tabulate': ('phone', ATK_TGT_SINGLE),
|
||
|
'TeeOff': ('golf-club-swing', ATK_TGT_SINGLE),
|
||
|
'ThrowBook': ('throw-object', ATK_TGT_SINGLE),
|
||
|
'Tremor': ('stomp', ATK_TGT_GROUP),
|
||
|
'Watercooler': ('watercooler', ATK_TGT_SINGLE),
|
||
|
'Withdrawal': ('magic1', ATK_TGT_SINGLE),
|
||
|
'WriteOff': ('hold-pencil', ATK_TGT_SINGLE)}
|
||
|
AUDIT = SuitAttacks.keys().index('Audit')
|
||
|
BITE = SuitAttacks.keys().index('Bite')
|
||
|
BOUNCE_CHECK = SuitAttacks.keys().index('BounceCheck')
|
||
|
BRAIN_STORM = SuitAttacks.keys().index('BrainStorm')
|
||
|
BUZZ_WORD = SuitAttacks.keys().index('BuzzWord')
|
||
|
CALCULATE = SuitAttacks.keys().index('Calculate')
|
||
|
CANNED = SuitAttacks.keys().index('Canned')
|
||
|
CHOMP = SuitAttacks.keys().index('Chomp')
|
||
|
CIGAR_SMOKE = SuitAttacks.keys().index('CigarSmoke')
|
||
|
CLIPON_TIE = SuitAttacks.keys().index('ClipOnTie')
|
||
|
CRUNCH = SuitAttacks.keys().index('Crunch')
|
||
|
DEMOTION = SuitAttacks.keys().index('Demotion')
|
||
|
DOWNSIZE = SuitAttacks.keys().index('Downsize')
|
||
|
DOUBLE_TALK = SuitAttacks.keys().index('DoubleTalk')
|
||
|
EVICTION_NOTICE = SuitAttacks.keys().index('EvictionNotice')
|
||
|
EVIL_EYE = SuitAttacks.keys().index('EvilEye')
|
||
|
FILIBUSTER = SuitAttacks.keys().index('Filibuster')
|
||
|
FILL_WITH_LEAD = SuitAttacks.keys().index('FillWithLead')
|
||
|
FINGER_WAG = SuitAttacks.keys().index('FingerWag')
|
||
|
FIRED = SuitAttacks.keys().index('Fired')
|
||
|
FIVE_O_CLOCK_SHADOW = SuitAttacks.keys().index('FiveOClockShadow')
|
||
|
FLOOD_THE_MARKET = SuitAttacks.keys().index('FloodTheMarket')
|
||
|
FOUNTAIN_PEN = SuitAttacks.keys().index('FountainPen')
|
||
|
FREEZE_ASSETS = SuitAttacks.keys().index('FreezeAssets')
|
||
|
GAVEL = SuitAttacks.keys().index('Gavel')
|
||
|
GLOWER_POWER = SuitAttacks.keys().index('GlowerPower')
|
||
|
GUILT_TRIP = SuitAttacks.keys().index('GuiltTrip')
|
||
|
HALF_WINDSOR = SuitAttacks.keys().index('HalfWindsor')
|
||
|
HANG_UP = SuitAttacks.keys().index('HangUp')
|
||
|
HEAD_SHRINK = SuitAttacks.keys().index('HeadShrink')
|
||
|
HOT_AIR = SuitAttacks.keys().index('HotAir')
|
||
|
JARGON = SuitAttacks.keys().index('Jargon')
|
||
|
LEGALESE = SuitAttacks.keys().index('Legalese')
|
||
|
LIQUIDATE = SuitAttacks.keys().index('Liquidate')
|
||
|
MARKET_CRASH = SuitAttacks.keys().index('MarketCrash')
|
||
|
MUMBO_JUMBO = SuitAttacks.keys().index('MumboJumbo')
|
||
|
PARADIGM_SHIFT = SuitAttacks.keys().index('ParadigmShift')
|
||
|
PECKING_ORDER = SuitAttacks.keys().index('PeckingOrder')
|
||
|
PICK_POCKET = SuitAttacks.keys().index('PickPocket')
|
||
|
PINK_SLIP = SuitAttacks.keys().index('PinkSlip')
|
||
|
PLAY_HARDBALL = SuitAttacks.keys().index('PlayHardball')
|
||
|
POUND_KEY = SuitAttacks.keys().index('PoundKey')
|
||
|
POWER_TIE = SuitAttacks.keys().index('PowerTie')
|
||
|
POWER_TRIP = SuitAttacks.keys().index('PowerTrip')
|
||
|
QUAKE = SuitAttacks.keys().index('Quake')
|
||
|
RAZZLE_DAZZLE = SuitAttacks.keys().index('RazzleDazzle')
|
||
|
RED_TAPE = SuitAttacks.keys().index('RedTape')
|
||
|
RE_ORG = SuitAttacks.keys().index('ReOrg')
|
||
|
RESTRAINING_ORDER = SuitAttacks.keys().index('RestrainingOrder')
|
||
|
ROLODEX = SuitAttacks.keys().index('Rolodex')
|
||
|
RUBBER_STAMP = SuitAttacks.keys().index('RubberStamp')
|
||
|
RUB_OUT = SuitAttacks.keys().index('RubOut')
|
||
|
SACKED = SuitAttacks.keys().index('Sacked')
|
||
|
SANDTRAP = SuitAttacks.keys().index('SandTrap')
|
||
|
SCHMOOZE = SuitAttacks.keys().index('Schmooze')
|
||
|
SHAKE = SuitAttacks.keys().index('Shake')
|
||
|
SHRED = SuitAttacks.keys().index('Shred')
|
||
|
SONG_AND_DANCE = SuitAttacks.keys().index('SongAndDance')
|
||
|
SPIN = SuitAttacks.keys().index('Spin')
|
||
|
SYNERGY = SuitAttacks.keys().index('Synergy')
|
||
|
TABULATE = SuitAttacks.keys().index('Tabulate')
|
||
|
TEE_OFF = SuitAttacks.keys().index('TeeOff')
|
||
|
THROW_BOOK = SuitAttacks.keys().index('ThrowBook')
|
||
|
TREMOR = SuitAttacks.keys().index('Tremor')
|
||
|
WATERCOOLER = SuitAttacks.keys().index('Watercooler')
|
||
|
WITHDRAWAL = SuitAttacks.keys().index('Withdrawal')
|
||
|
WRITE_OFF = SuitAttacks.keys().index('WriteOff')
|
||
|
|
||
|
def getFaceoffTaunt(suitName, doId):
|
||
|
if suitName in SuitFaceoffTaunts:
|
||
|
taunts = SuitFaceoffTaunts[suitName]
|
||
|
else:
|
||
|
taunts = TTLocalizer.SuitFaceoffDefaultTaunts
|
||
|
return taunts[doId % len(taunts)]
|
||
|
|
||
|
|
||
|
SuitFaceoffTaunts = OTPLocalizer.SuitFaceoffTaunts
|
||
|
|
||
|
def getAttackTauntIndexFromIndex(suit, attackIndex):
|
||
|
adict = getSuitAttack(suit.getStyleName(), suit.getLevel(), attackIndex)
|
||
|
return getAttackTauntIndex(adict['name'])
|
||
|
|
||
|
|
||
|
def getAttackTauntIndex(attackName):
|
||
|
if attackName in SuitAttackTaunts:
|
||
|
taunts = SuitAttackTaunts[attackName]
|
||
|
return random.randint(0, len(taunts) - 1)
|
||
|
else:
|
||
|
return 1
|
||
|
|
||
|
|
||
|
def getAttackTaunt(attackName, index = None):
|
||
|
if attackName in SuitAttackTaunts:
|
||
|
taunts = SuitAttackTaunts[attackName]
|
||
|
else:
|
||
|
taunts = TTLocalizer.SuitAttackDefaultTaunts
|
||
|
if index != None:
|
||
|
if index >= len(taunts):
|
||
|
notify.warning('index exceeds length of taunts list in getAttackTaunt')
|
||
|
return TTLocalizer.SuitAttackDefaultTaunts[0]
|
||
|
return taunts[index]
|
||
|
else:
|
||
|
return random.choice(taunts)
|
||
|
return
|
||
|
|
||
|
|
||
|
SuitAttackTaunts = TTLocalizer.SuitAttackTaunts
|
||
|
DisabledAttacks = ('Gavel', 'SongAndDance', 'SandTrap', 'FloodTheMarket', 'FiveOClockShadow')
|
||
|
|
||
|
def getAttacksByType(attributes):
|
||
|
groupAttacks = []
|
||
|
singleAttacks = []
|
||
|
|
||
|
for attack in sorted(attributes['attacks'], key=lambda x: x[0]):
|
||
|
if attack[0] in DisabledAttacks:
|
||
|
continue
|
||
|
if SuitAttacks[attack[0]][1] == ATK_TGT_GROUP:
|
||
|
groupAttacks.append(attack)
|
||
|
else:
|
||
|
singleAttacks.append(attack)
|
||
|
|
||
|
return groupAttacks, singleAttacks
|