toontown-just-works/toontown/battle/SuitBattleGlobals.py
2024-07-07 18:08:39 -05:00

3187 lines
No EOL
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