bastd.actor.spazappearance

Appearance functionality for spazzes.

  1# Released under the MIT License. See LICENSE for details.
  2#
  3"""Appearance functionality for spazzes."""
  4from __future__ import annotations
  5
  6from typing import TYPE_CHECKING
  7
  8import _ba
  9import ba
 10
 11if TYPE_CHECKING:
 12    pass
 13
 14
 15def get_appearances(include_locked: bool = False) -> list[str]:
 16    """Get the list of available spaz appearances."""
 17    # pylint: disable=too-many-statements
 18    # pylint: disable=too-many-branches
 19    disallowed = []
 20    if not include_locked:
 21        # hmm yeah this'll be tough to hack...
 22        if not _ba.get_purchased('characters.santa'):
 23            disallowed.append('Santa Claus')
 24        if not _ba.get_purchased('characters.frosty'):
 25            disallowed.append('Frosty')
 26        if not _ba.get_purchased('characters.bones'):
 27            disallowed.append('Bones')
 28        if not _ba.get_purchased('characters.bernard'):
 29            disallowed.append('Bernard')
 30        if not _ba.get_purchased('characters.pixie'):
 31            disallowed.append('Pixel')
 32        if not _ba.get_purchased('characters.pascal'):
 33            disallowed.append('Pascal')
 34        if not _ba.get_purchased('characters.actionhero'):
 35            disallowed.append('Todd McBurton')
 36        if not _ba.get_purchased('characters.taobaomascot'):
 37            disallowed.append('Taobao Mascot')
 38        if not _ba.get_purchased('characters.agent'):
 39            disallowed.append('Agent Johnson')
 40        if not _ba.get_purchased('characters.jumpsuit'):
 41            disallowed.append('Lee')
 42        if not _ba.get_purchased('characters.assassin'):
 43            disallowed.append('Zola')
 44        if not _ba.get_purchased('characters.wizard'):
 45            disallowed.append('Grumbledorf')
 46        if not _ba.get_purchased('characters.cowboy'):
 47            disallowed.append('Butch')
 48        if not _ba.get_purchased('characters.witch'):
 49            disallowed.append('Witch')
 50        if not _ba.get_purchased('characters.warrior'):
 51            disallowed.append('Warrior')
 52        if not _ba.get_purchased('characters.superhero'):
 53            disallowed.append('Middle-Man')
 54        if not _ba.get_purchased('characters.alien'):
 55            disallowed.append('Alien')
 56        if not _ba.get_purchased('characters.oldlady'):
 57            disallowed.append('OldLady')
 58        if not _ba.get_purchased('characters.gladiator'):
 59            disallowed.append('Gladiator')
 60        if not _ba.get_purchased('characters.wrestler'):
 61            disallowed.append('Wrestler')
 62        if not _ba.get_purchased('characters.operasinger'):
 63            disallowed.append('Gretel')
 64        if not _ba.get_purchased('characters.robot'):
 65            disallowed.append('Robot')
 66        if not _ba.get_purchased('characters.cyborg'):
 67            disallowed.append('B-9000')
 68        if not _ba.get_purchased('characters.bunny'):
 69            disallowed.append('Easter Bunny')
 70        if not _ba.get_purchased('characters.kronk'):
 71            disallowed.append('Kronk')
 72        if not _ba.get_purchased('characters.zoe'):
 73            disallowed.append('Zoe')
 74        if not _ba.get_purchased('characters.jackmorgan'):
 75            disallowed.append('Jack Morgan')
 76        if not _ba.get_purchased('characters.mel'):
 77            disallowed.append('Mel')
 78        if not _ba.get_purchased('characters.snakeshadow'):
 79            disallowed.append('Snake Shadow')
 80    return [
 81        s for s in list(ba.app.spaz_appearances.keys()) if s not in disallowed
 82    ]
 83
 84
 85class Appearance:
 86    """Create and fill out one of these suckers to define a spaz appearance"""
 87
 88    def __init__(self, name: str):
 89        self.name = name
 90        if self.name in ba.app.spaz_appearances:
 91            raise Exception('spaz appearance name "' + self.name +
 92                            '" already exists.')
 93        ba.app.spaz_appearances[self.name] = self
 94        self.color_texture = ''
 95        self.color_mask_texture = ''
 96        self.icon_texture = ''
 97        self.icon_mask_texture = ''
 98        self.head_model = ''
 99        self.torso_model = ''
100        self.pelvis_model = ''
101        self.upper_arm_model = ''
102        self.forearm_model = ''
103        self.hand_model = ''
104        self.upper_leg_model = ''
105        self.lower_leg_model = ''
106        self.toes_model = ''
107        self.jump_sounds: list[str] = []
108        self.attack_sounds: list[str] = []
109        self.impact_sounds: list[str] = []
110        self.death_sounds: list[str] = []
111        self.pickup_sounds: list[str] = []
112        self.fall_sounds: list[str] = []
113        self.style = 'spaz'
114        self.default_color: tuple[float, float, float] | None = None
115        self.default_highlight: tuple[float, float, float] | None = None
116
117
118def register_appearances() -> None:
119    """Register our builtin spaz appearances."""
120
121    # this is quite ugly but will be going away so not worth cleaning up
122    # pylint: disable=invalid-name
123    # pylint: disable=too-many-locals
124    # pylint: disable=too-many-statements
125
126    # Spaz #######################################
127    t = Appearance('Spaz')
128    t.color_texture = 'neoSpazColor'
129    t.color_mask_texture = 'neoSpazColorMask'
130    t.icon_texture = 'neoSpazIcon'
131    t.icon_mask_texture = 'neoSpazIconColorMask'
132    t.head_model = 'neoSpazHead'
133    t.torso_model = 'neoSpazTorso'
134    t.pelvis_model = 'neoSpazPelvis'
135    t.upper_arm_model = 'neoSpazUpperArm'
136    t.forearm_model = 'neoSpazForeArm'
137    t.hand_model = 'neoSpazHand'
138    t.upper_leg_model = 'neoSpazUpperLeg'
139    t.lower_leg_model = 'neoSpazLowerLeg'
140    t.toes_model = 'neoSpazToes'
141    t.jump_sounds = ['spazJump01', 'spazJump02', 'spazJump03', 'spazJump04']
142    t.attack_sounds = [
143        'spazAttack01', 'spazAttack02', 'spazAttack03', 'spazAttack04'
144    ]
145    t.impact_sounds = [
146        'spazImpact01', 'spazImpact02', 'spazImpact03', 'spazImpact04'
147    ]
148    t.death_sounds = ['spazDeath01']
149    t.pickup_sounds = ['spazPickup01']
150    t.fall_sounds = ['spazFall01']
151    t.style = 'spaz'
152
153    # Zoe #####################################
154    t = Appearance('Zoe')
155    t.color_texture = 'zoeColor'
156    t.color_mask_texture = 'zoeColorMask'
157    t.default_color = (0.6, 0.6, 0.6)
158    t.default_highlight = (0, 1, 0)
159    t.icon_texture = 'zoeIcon'
160    t.icon_mask_texture = 'zoeIconColorMask'
161    t.head_model = 'zoeHead'
162    t.torso_model = 'zoeTorso'
163    t.pelvis_model = 'zoePelvis'
164    t.upper_arm_model = 'zoeUpperArm'
165    t.forearm_model = 'zoeForeArm'
166    t.hand_model = 'zoeHand'
167    t.upper_leg_model = 'zoeUpperLeg'
168    t.lower_leg_model = 'zoeLowerLeg'
169    t.toes_model = 'zoeToes'
170    t.jump_sounds = ['zoeJump01', 'zoeJump02', 'zoeJump03']
171    t.attack_sounds = [
172        'zoeAttack01', 'zoeAttack02', 'zoeAttack03', 'zoeAttack04'
173    ]
174    t.impact_sounds = [
175        'zoeImpact01', 'zoeImpact02', 'zoeImpact03', 'zoeImpact04'
176    ]
177    t.death_sounds = ['zoeDeath01']
178    t.pickup_sounds = ['zoePickup01']
179    t.fall_sounds = ['zoeFall01']
180    t.style = 'female'
181
182    # Ninja ##########################################
183    t = Appearance('Snake Shadow')
184    t.color_texture = 'ninjaColor'
185    t.color_mask_texture = 'ninjaColorMask'
186    t.default_color = (1, 1, 1)
187    t.default_highlight = (0.55, 0.8, 0.55)
188    t.icon_texture = 'ninjaIcon'
189    t.icon_mask_texture = 'ninjaIconColorMask'
190    t.head_model = 'ninjaHead'
191    t.torso_model = 'ninjaTorso'
192    t.pelvis_model = 'ninjaPelvis'
193    t.upper_arm_model = 'ninjaUpperArm'
194    t.forearm_model = 'ninjaForeArm'
195    t.hand_model = 'ninjaHand'
196    t.upper_leg_model = 'ninjaUpperLeg'
197    t.lower_leg_model = 'ninjaLowerLeg'
198    t.toes_model = 'ninjaToes'
199    ninja_attacks = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
200    ninja_hits = ['ninjaHit' + str(i + 1) + '' for i in range(8)]
201    ninja_jumps = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
202    t.jump_sounds = ninja_jumps
203    t.attack_sounds = ninja_attacks
204    t.impact_sounds = ninja_hits
205    t.death_sounds = ['ninjaDeath1']
206    t.pickup_sounds = ninja_attacks
207    t.fall_sounds = ['ninjaFall1']
208    t.style = 'ninja'
209
210    # Barbarian #####################################
211    t = Appearance('Kronk')
212    t.color_texture = 'kronk'
213    t.color_mask_texture = 'kronkColorMask'
214    t.default_color = (0.4, 0.5, 0.4)
215    t.default_highlight = (1, 0.5, 0.3)
216    t.icon_texture = 'kronkIcon'
217    t.icon_mask_texture = 'kronkIconColorMask'
218    t.head_model = 'kronkHead'
219    t.torso_model = 'kronkTorso'
220    t.pelvis_model = 'kronkPelvis'
221    t.upper_arm_model = 'kronkUpperArm'
222    t.forearm_model = 'kronkForeArm'
223    t.hand_model = 'kronkHand'
224    t.upper_leg_model = 'kronkUpperLeg'
225    t.lower_leg_model = 'kronkLowerLeg'
226    t.toes_model = 'kronkToes'
227    kronk_sounds = [
228        'kronk1', 'kronk2', 'kronk3', 'kronk4', 'kronk5', 'kronk6', 'kronk7',
229        'kronk8', 'kronk9', 'kronk10'
230    ]
231    t.jump_sounds = kronk_sounds
232    t.attack_sounds = kronk_sounds
233    t.impact_sounds = kronk_sounds
234    t.death_sounds = ['kronkDeath']
235    t.pickup_sounds = kronk_sounds
236    t.fall_sounds = ['kronkFall']
237    t.style = 'kronk'
238
239    # Chef ###########################################
240    t = Appearance('Mel')
241    t.color_texture = 'melColor'
242    t.color_mask_texture = 'melColorMask'
243    t.default_color = (1, 1, 1)
244    t.default_highlight = (0.1, 0.6, 0.1)
245    t.icon_texture = 'melIcon'
246    t.icon_mask_texture = 'melIconColorMask'
247    t.head_model = 'melHead'
248    t.torso_model = 'melTorso'
249    t.pelvis_model = 'kronkPelvis'
250    t.upper_arm_model = 'melUpperArm'
251    t.forearm_model = 'melForeArm'
252    t.hand_model = 'melHand'
253    t.upper_leg_model = 'melUpperLeg'
254    t.lower_leg_model = 'melLowerLeg'
255    t.toes_model = 'melToes'
256    mel_sounds = [
257        'mel01', 'mel02', 'mel03', 'mel04', 'mel05', 'mel06', 'mel07', 'mel08',
258        'mel09', 'mel10'
259    ]
260    t.attack_sounds = mel_sounds
261    t.jump_sounds = mel_sounds
262    t.impact_sounds = mel_sounds
263    t.death_sounds = ['melDeath01']
264    t.pickup_sounds = mel_sounds
265    t.fall_sounds = ['melFall01']
266    t.style = 'mel'
267
268    # Pirate #######################################
269    t = Appearance('Jack Morgan')
270    t.color_texture = 'jackColor'
271    t.color_mask_texture = 'jackColorMask'
272    t.default_color = (1, 0.2, 0.1)
273    t.default_highlight = (1, 1, 0)
274    t.icon_texture = 'jackIcon'
275    t.icon_mask_texture = 'jackIconColorMask'
276    t.head_model = 'jackHead'
277    t.torso_model = 'jackTorso'
278    t.pelvis_model = 'kronkPelvis'
279    t.upper_arm_model = 'jackUpperArm'
280    t.forearm_model = 'jackForeArm'
281    t.hand_model = 'jackHand'
282    t.upper_leg_model = 'jackUpperLeg'
283    t.lower_leg_model = 'jackLowerLeg'
284    t.toes_model = 'jackToes'
285    hit_sounds = [
286        'jackHit01', 'jackHit02', 'jackHit03', 'jackHit04', 'jackHit05',
287        'jackHit06', 'jackHit07'
288    ]
289    sounds = ['jack01', 'jack02', 'jack03', 'jack04', 'jack05', 'jack06']
290    t.attack_sounds = sounds
291    t.jump_sounds = sounds
292    t.impact_sounds = hit_sounds
293    t.death_sounds = ['jackDeath01']
294    t.pickup_sounds = sounds
295    t.fall_sounds = ['jackFall01']
296    t.style = 'pirate'
297
298    # Santa ######################################
299    t = Appearance('Santa Claus')
300    t.color_texture = 'santaColor'
301    t.color_mask_texture = 'santaColorMask'
302    t.default_color = (1, 0, 0)
303    t.default_highlight = (1, 1, 1)
304    t.icon_texture = 'santaIcon'
305    t.icon_mask_texture = 'santaIconColorMask'
306    t.head_model = 'santaHead'
307    t.torso_model = 'santaTorso'
308    t.pelvis_model = 'kronkPelvis'
309    t.upper_arm_model = 'santaUpperArm'
310    t.forearm_model = 'santaForeArm'
311    t.hand_model = 'santaHand'
312    t.upper_leg_model = 'santaUpperLeg'
313    t.lower_leg_model = 'santaLowerLeg'
314    t.toes_model = 'santaToes'
315    hit_sounds = ['santaHit01', 'santaHit02', 'santaHit03', 'santaHit04']
316    sounds = ['santa01', 'santa02', 'santa03', 'santa04', 'santa05']
317    t.attack_sounds = sounds
318    t.jump_sounds = sounds
319    t.impact_sounds = hit_sounds
320    t.death_sounds = ['santaDeath']
321    t.pickup_sounds = sounds
322    t.fall_sounds = ['santaFall']
323    t.style = 'santa'
324
325    # Snowman ###################################
326    t = Appearance('Frosty')
327    t.color_texture = 'frostyColor'
328    t.color_mask_texture = 'frostyColorMask'
329    t.default_color = (0.5, 0.5, 1)
330    t.default_highlight = (1, 0.5, 0)
331    t.icon_texture = 'frostyIcon'
332    t.icon_mask_texture = 'frostyIconColorMask'
333    t.head_model = 'frostyHead'
334    t.torso_model = 'frostyTorso'
335    t.pelvis_model = 'frostyPelvis'
336    t.upper_arm_model = 'frostyUpperArm'
337    t.forearm_model = 'frostyForeArm'
338    t.hand_model = 'frostyHand'
339    t.upper_leg_model = 'frostyUpperLeg'
340    t.lower_leg_model = 'frostyLowerLeg'
341    t.toes_model = 'frostyToes'
342    frosty_sounds = [
343        'frosty01', 'frosty02', 'frosty03', 'frosty04', 'frosty05'
344    ]
345    frosty_hit_sounds = ['frostyHit01', 'frostyHit02', 'frostyHit03']
346    t.attack_sounds = frosty_sounds
347    t.jump_sounds = frosty_sounds
348    t.impact_sounds = frosty_hit_sounds
349    t.death_sounds = ['frostyDeath']
350    t.pickup_sounds = frosty_sounds
351    t.fall_sounds = ['frostyFall']
352    t.style = 'frosty'
353
354    # Skeleton ################################
355    t = Appearance('Bones')
356    t.color_texture = 'bonesColor'
357    t.color_mask_texture = 'bonesColorMask'
358    t.default_color = (0.6, 0.9, 1)
359    t.default_highlight = (0.6, 0.9, 1)
360    t.icon_texture = 'bonesIcon'
361    t.icon_mask_texture = 'bonesIconColorMask'
362    t.head_model = 'bonesHead'
363    t.torso_model = 'bonesTorso'
364    t.pelvis_model = 'bonesPelvis'
365    t.upper_arm_model = 'bonesUpperArm'
366    t.forearm_model = 'bonesForeArm'
367    t.hand_model = 'bonesHand'
368    t.upper_leg_model = 'bonesUpperLeg'
369    t.lower_leg_model = 'bonesLowerLeg'
370    t.toes_model = 'bonesToes'
371    bones_sounds = ['bones1', 'bones2', 'bones3']
372    bones_hit_sounds = ['bones1', 'bones2', 'bones3']
373    t.attack_sounds = bones_sounds
374    t.jump_sounds = bones_sounds
375    t.impact_sounds = bones_hit_sounds
376    t.death_sounds = ['bonesDeath']
377    t.pickup_sounds = bones_sounds
378    t.fall_sounds = ['bonesFall']
379    t.style = 'bones'
380
381    # Bear ###################################
382    t = Appearance('Bernard')
383    t.color_texture = 'bearColor'
384    t.color_mask_texture = 'bearColorMask'
385    t.default_color = (0.7, 0.5, 0.0)
386    t.icon_texture = 'bearIcon'
387    t.icon_mask_texture = 'bearIconColorMask'
388    t.head_model = 'bearHead'
389    t.torso_model = 'bearTorso'
390    t.pelvis_model = 'bearPelvis'
391    t.upper_arm_model = 'bearUpperArm'
392    t.forearm_model = 'bearForeArm'
393    t.hand_model = 'bearHand'
394    t.upper_leg_model = 'bearUpperLeg'
395    t.lower_leg_model = 'bearLowerLeg'
396    t.toes_model = 'bearToes'
397    bear_sounds = ['bear1', 'bear2', 'bear3', 'bear4']
398    bear_hit_sounds = ['bearHit1', 'bearHit2']
399    t.attack_sounds = bear_sounds
400    t.jump_sounds = bear_sounds
401    t.impact_sounds = bear_hit_sounds
402    t.death_sounds = ['bearDeath']
403    t.pickup_sounds = bear_sounds
404    t.fall_sounds = ['bearFall']
405    t.style = 'bear'
406
407    # Penguin ###################################
408    t = Appearance('Pascal')
409    t.color_texture = 'penguinColor'
410    t.color_mask_texture = 'penguinColorMask'
411    t.default_color = (0.3, 0.5, 0.8)
412    t.default_highlight = (1, 0, 0)
413    t.icon_texture = 'penguinIcon'
414    t.icon_mask_texture = 'penguinIconColorMask'
415    t.head_model = 'penguinHead'
416    t.torso_model = 'penguinTorso'
417    t.pelvis_model = 'penguinPelvis'
418    t.upper_arm_model = 'penguinUpperArm'
419    t.forearm_model = 'penguinForeArm'
420    t.hand_model = 'penguinHand'
421    t.upper_leg_model = 'penguinUpperLeg'
422    t.lower_leg_model = 'penguinLowerLeg'
423    t.toes_model = 'penguinToes'
424    penguin_sounds = ['penguin1', 'penguin2', 'penguin3', 'penguin4']
425    penguin_hit_sounds = ['penguinHit1', 'penguinHit2']
426    t.attack_sounds = penguin_sounds
427    t.jump_sounds = penguin_sounds
428    t.impact_sounds = penguin_hit_sounds
429    t.death_sounds = ['penguinDeath']
430    t.pickup_sounds = penguin_sounds
431    t.fall_sounds = ['penguinFall']
432    t.style = 'penguin'
433
434    # Ali ###################################
435    t = Appearance('Taobao Mascot')
436    t.color_texture = 'aliColor'
437    t.color_mask_texture = 'aliColorMask'
438    t.default_color = (1, 0.5, 0)
439    t.default_highlight = (1, 1, 1)
440    t.icon_texture = 'aliIcon'
441    t.icon_mask_texture = 'aliIconColorMask'
442    t.head_model = 'aliHead'
443    t.torso_model = 'aliTorso'
444    t.pelvis_model = 'aliPelvis'
445    t.upper_arm_model = 'aliUpperArm'
446    t.forearm_model = 'aliForeArm'
447    t.hand_model = 'aliHand'
448    t.upper_leg_model = 'aliUpperLeg'
449    t.lower_leg_model = 'aliLowerLeg'
450    t.toes_model = 'aliToes'
451    ali_sounds = ['ali1', 'ali2', 'ali3', 'ali4']
452    ali_hit_sounds = ['aliHit1', 'aliHit2']
453    t.attack_sounds = ali_sounds
454    t.jump_sounds = ali_sounds
455    t.impact_sounds = ali_hit_sounds
456    t.death_sounds = ['aliDeath']
457    t.pickup_sounds = ali_sounds
458    t.fall_sounds = ['aliFall']
459    t.style = 'ali'
460
461    # cyborg ###################################
462    t = Appearance('B-9000')
463    t.color_texture = 'cyborgColor'
464    t.color_mask_texture = 'cyborgColorMask'
465    t.default_color = (0.5, 0.5, 0.5)
466    t.default_highlight = (1, 0, 0)
467    t.icon_texture = 'cyborgIcon'
468    t.icon_mask_texture = 'cyborgIconColorMask'
469    t.head_model = 'cyborgHead'
470    t.torso_model = 'cyborgTorso'
471    t.pelvis_model = 'cyborgPelvis'
472    t.upper_arm_model = 'cyborgUpperArm'
473    t.forearm_model = 'cyborgForeArm'
474    t.hand_model = 'cyborgHand'
475    t.upper_leg_model = 'cyborgUpperLeg'
476    t.lower_leg_model = 'cyborgLowerLeg'
477    t.toes_model = 'cyborgToes'
478    cyborg_sounds = ['cyborg1', 'cyborg2', 'cyborg3', 'cyborg4']
479    cyborg_hit_sounds = ['cyborgHit1', 'cyborgHit2']
480    t.attack_sounds = cyborg_sounds
481    t.jump_sounds = cyborg_sounds
482    t.impact_sounds = cyborg_hit_sounds
483    t.death_sounds = ['cyborgDeath']
484    t.pickup_sounds = cyborg_sounds
485    t.fall_sounds = ['cyborgFall']
486    t.style = 'cyborg'
487
488    # Agent ###################################
489    t = Appearance('Agent Johnson')
490    t.color_texture = 'agentColor'
491    t.color_mask_texture = 'agentColorMask'
492    t.default_color = (0.3, 0.3, 0.33)
493    t.default_highlight = (1, 0.5, 0.3)
494    t.icon_texture = 'agentIcon'
495    t.icon_mask_texture = 'agentIconColorMask'
496    t.head_model = 'agentHead'
497    t.torso_model = 'agentTorso'
498    t.pelvis_model = 'agentPelvis'
499    t.upper_arm_model = 'agentUpperArm'
500    t.forearm_model = 'agentForeArm'
501    t.hand_model = 'agentHand'
502    t.upper_leg_model = 'agentUpperLeg'
503    t.lower_leg_model = 'agentLowerLeg'
504    t.toes_model = 'agentToes'
505    agent_sounds = ['agent1', 'agent2', 'agent3', 'agent4']
506    agent_hit_sounds = ['agentHit1', 'agentHit2']
507    t.attack_sounds = agent_sounds
508    t.jump_sounds = agent_sounds
509    t.impact_sounds = agent_hit_sounds
510    t.death_sounds = ['agentDeath']
511    t.pickup_sounds = agent_sounds
512    t.fall_sounds = ['agentFall']
513    t.style = 'agent'
514
515    # Jumpsuit ###################################
516    t = Appearance('Lee')
517    t.color_texture = 'jumpsuitColor'
518    t.color_mask_texture = 'jumpsuitColorMask'
519    t.default_color = (0.3, 0.5, 0.8)
520    t.default_highlight = (1, 0, 0)
521    t.icon_texture = 'jumpsuitIcon'
522    t.icon_mask_texture = 'jumpsuitIconColorMask'
523    t.head_model = 'jumpsuitHead'
524    t.torso_model = 'jumpsuitTorso'
525    t.pelvis_model = 'jumpsuitPelvis'
526    t.upper_arm_model = 'jumpsuitUpperArm'
527    t.forearm_model = 'jumpsuitForeArm'
528    t.hand_model = 'jumpsuitHand'
529    t.upper_leg_model = 'jumpsuitUpperLeg'
530    t.lower_leg_model = 'jumpsuitLowerLeg'
531    t.toes_model = 'jumpsuitToes'
532    jumpsuit_sounds = ['jumpsuit1', 'jumpsuit2', 'jumpsuit3', 'jumpsuit4']
533    jumpsuit_hit_sounds = ['jumpsuitHit1', 'jumpsuitHit2']
534    t.attack_sounds = jumpsuit_sounds
535    t.jump_sounds = jumpsuit_sounds
536    t.impact_sounds = jumpsuit_hit_sounds
537    t.death_sounds = ['jumpsuitDeath']
538    t.pickup_sounds = jumpsuit_sounds
539    t.fall_sounds = ['jumpsuitFall']
540    t.style = 'spaz'
541
542    # ActionHero ###################################
543    t = Appearance('Todd McBurton')
544    t.color_texture = 'actionHeroColor'
545    t.color_mask_texture = 'actionHeroColorMask'
546    t.default_color = (0.3, 0.5, 0.8)
547    t.default_highlight = (1, 0, 0)
548    t.icon_texture = 'actionHeroIcon'
549    t.icon_mask_texture = 'actionHeroIconColorMask'
550    t.head_model = 'actionHeroHead'
551    t.torso_model = 'actionHeroTorso'
552    t.pelvis_model = 'actionHeroPelvis'
553    t.upper_arm_model = 'actionHeroUpperArm'
554    t.forearm_model = 'actionHeroForeArm'
555    t.hand_model = 'actionHeroHand'
556    t.upper_leg_model = 'actionHeroUpperLeg'
557    t.lower_leg_model = 'actionHeroLowerLeg'
558    t.toes_model = 'actionHeroToes'
559    action_hero_sounds = [
560        'actionHero1', 'actionHero2', 'actionHero3', 'actionHero4'
561    ]
562    action_hero_hit_sounds = ['actionHeroHit1', 'actionHeroHit2']
563    t.attack_sounds = action_hero_sounds
564    t.jump_sounds = action_hero_sounds
565    t.impact_sounds = action_hero_hit_sounds
566    t.death_sounds = ['actionHeroDeath']
567    t.pickup_sounds = action_hero_sounds
568    t.fall_sounds = ['actionHeroFall']
569    t.style = 'spaz'
570
571    # Assassin ###################################
572    t = Appearance('Zola')
573    t.color_texture = 'assassinColor'
574    t.color_mask_texture = 'assassinColorMask'
575    t.default_color = (0.3, 0.5, 0.8)
576    t.default_highlight = (1, 0, 0)
577    t.icon_texture = 'assassinIcon'
578    t.icon_mask_texture = 'assassinIconColorMask'
579    t.head_model = 'assassinHead'
580    t.torso_model = 'assassinTorso'
581    t.pelvis_model = 'assassinPelvis'
582    t.upper_arm_model = 'assassinUpperArm'
583    t.forearm_model = 'assassinForeArm'
584    t.hand_model = 'assassinHand'
585    t.upper_leg_model = 'assassinUpperLeg'
586    t.lower_leg_model = 'assassinLowerLeg'
587    t.toes_model = 'assassinToes'
588    assassin_sounds = ['assassin1', 'assassin2', 'assassin3', 'assassin4']
589    assassin_hit_sounds = ['assassinHit1', 'assassinHit2']
590    t.attack_sounds = assassin_sounds
591    t.jump_sounds = assassin_sounds
592    t.impact_sounds = assassin_hit_sounds
593    t.death_sounds = ['assassinDeath']
594    t.pickup_sounds = assassin_sounds
595    t.fall_sounds = ['assassinFall']
596    t.style = 'spaz'
597
598    # Wizard ###################################
599    t = Appearance('Grumbledorf')
600    t.color_texture = 'wizardColor'
601    t.color_mask_texture = 'wizardColorMask'
602    t.default_color = (0.2, 0.4, 1.0)
603    t.default_highlight = (0.06, 0.15, 0.4)
604    t.icon_texture = 'wizardIcon'
605    t.icon_mask_texture = 'wizardIconColorMask'
606    t.head_model = 'wizardHead'
607    t.torso_model = 'wizardTorso'
608    t.pelvis_model = 'wizardPelvis'
609    t.upper_arm_model = 'wizardUpperArm'
610    t.forearm_model = 'wizardForeArm'
611    t.hand_model = 'wizardHand'
612    t.upper_leg_model = 'wizardUpperLeg'
613    t.lower_leg_model = 'wizardLowerLeg'
614    t.toes_model = 'wizardToes'
615    wizard_sounds = ['wizard1', 'wizard2', 'wizard3', 'wizard4']
616    wizard_hit_sounds = ['wizardHit1', 'wizardHit2']
617    t.attack_sounds = wizard_sounds
618    t.jump_sounds = wizard_sounds
619    t.impact_sounds = wizard_hit_sounds
620    t.death_sounds = ['wizardDeath']
621    t.pickup_sounds = wizard_sounds
622    t.fall_sounds = ['wizardFall']
623    t.style = 'spaz'
624
625    # Cowboy ###################################
626    t = Appearance('Butch')
627    t.color_texture = 'cowboyColor'
628    t.color_mask_texture = 'cowboyColorMask'
629    t.default_color = (0.3, 0.5, 0.8)
630    t.default_highlight = (1, 0, 0)
631    t.icon_texture = 'cowboyIcon'
632    t.icon_mask_texture = 'cowboyIconColorMask'
633    t.head_model = 'cowboyHead'
634    t.torso_model = 'cowboyTorso'
635    t.pelvis_model = 'cowboyPelvis'
636    t.upper_arm_model = 'cowboyUpperArm'
637    t.forearm_model = 'cowboyForeArm'
638    t.hand_model = 'cowboyHand'
639    t.upper_leg_model = 'cowboyUpperLeg'
640    t.lower_leg_model = 'cowboyLowerLeg'
641    t.toes_model = 'cowboyToes'
642    cowboy_sounds = ['cowboy1', 'cowboy2', 'cowboy3', 'cowboy4']
643    cowboy_hit_sounds = ['cowboyHit1', 'cowboyHit2']
644    t.attack_sounds = cowboy_sounds
645    t.jump_sounds = cowboy_sounds
646    t.impact_sounds = cowboy_hit_sounds
647    t.death_sounds = ['cowboyDeath']
648    t.pickup_sounds = cowboy_sounds
649    t.fall_sounds = ['cowboyFall']
650    t.style = 'spaz'
651
652    # Witch ###################################
653    t = Appearance('Witch')
654    t.color_texture = 'witchColor'
655    t.color_mask_texture = 'witchColorMask'
656    t.default_color = (0.3, 0.5, 0.8)
657    t.default_highlight = (1, 0, 0)
658    t.icon_texture = 'witchIcon'
659    t.icon_mask_texture = 'witchIconColorMask'
660    t.head_model = 'witchHead'
661    t.torso_model = 'witchTorso'
662    t.pelvis_model = 'witchPelvis'
663    t.upper_arm_model = 'witchUpperArm'
664    t.forearm_model = 'witchForeArm'
665    t.hand_model = 'witchHand'
666    t.upper_leg_model = 'witchUpperLeg'
667    t.lower_leg_model = 'witchLowerLeg'
668    t.toes_model = 'witchToes'
669    witch_sounds = ['witch1', 'witch2', 'witch3', 'witch4']
670    witch_hit_sounds = ['witchHit1', 'witchHit2']
671    t.attack_sounds = witch_sounds
672    t.jump_sounds = witch_sounds
673    t.impact_sounds = witch_hit_sounds
674    t.death_sounds = ['witchDeath']
675    t.pickup_sounds = witch_sounds
676    t.fall_sounds = ['witchFall']
677    t.style = 'spaz'
678
679    # Warrior ###################################
680    t = Appearance('Warrior')
681    t.color_texture = 'warriorColor'
682    t.color_mask_texture = 'warriorColorMask'
683    t.default_color = (0.3, 0.5, 0.8)
684    t.default_highlight = (1, 0, 0)
685    t.icon_texture = 'warriorIcon'
686    t.icon_mask_texture = 'warriorIconColorMask'
687    t.head_model = 'warriorHead'
688    t.torso_model = 'warriorTorso'
689    t.pelvis_model = 'warriorPelvis'
690    t.upper_arm_model = 'warriorUpperArm'
691    t.forearm_model = 'warriorForeArm'
692    t.hand_model = 'warriorHand'
693    t.upper_leg_model = 'warriorUpperLeg'
694    t.lower_leg_model = 'warriorLowerLeg'
695    t.toes_model = 'warriorToes'
696    warrior_sounds = ['warrior1', 'warrior2', 'warrior3', 'warrior4']
697    warrior_hit_sounds = ['warriorHit1', 'warriorHit2']
698    t.attack_sounds = warrior_sounds
699    t.jump_sounds = warrior_sounds
700    t.impact_sounds = warrior_hit_sounds
701    t.death_sounds = ['warriorDeath']
702    t.pickup_sounds = warrior_sounds
703    t.fall_sounds = ['warriorFall']
704    t.style = 'spaz'
705
706    # Superhero ###################################
707    t = Appearance('Middle-Man')
708    t.color_texture = 'superheroColor'
709    t.color_mask_texture = 'superheroColorMask'
710    t.default_color = (0.3, 0.5, 0.8)
711    t.default_highlight = (1, 0, 0)
712    t.icon_texture = 'superheroIcon'
713    t.icon_mask_texture = 'superheroIconColorMask'
714    t.head_model = 'superheroHead'
715    t.torso_model = 'superheroTorso'
716    t.pelvis_model = 'superheroPelvis'
717    t.upper_arm_model = 'superheroUpperArm'
718    t.forearm_model = 'superheroForeArm'
719    t.hand_model = 'superheroHand'
720    t.upper_leg_model = 'superheroUpperLeg'
721    t.lower_leg_model = 'superheroLowerLeg'
722    t.toes_model = 'superheroToes'
723    superhero_sounds = ['superhero1', 'superhero2', 'superhero3', 'superhero4']
724    superhero_hit_sounds = ['superheroHit1', 'superheroHit2']
725    t.attack_sounds = superhero_sounds
726    t.jump_sounds = superhero_sounds
727    t.impact_sounds = superhero_hit_sounds
728    t.death_sounds = ['superheroDeath']
729    t.pickup_sounds = superhero_sounds
730    t.fall_sounds = ['superheroFall']
731    t.style = 'spaz'
732
733    # Alien ###################################
734    t = Appearance('Alien')
735    t.color_texture = 'alienColor'
736    t.color_mask_texture = 'alienColorMask'
737    t.default_color = (0.3, 0.5, 0.8)
738    t.default_highlight = (1, 0, 0)
739    t.icon_texture = 'alienIcon'
740    t.icon_mask_texture = 'alienIconColorMask'
741    t.head_model = 'alienHead'
742    t.torso_model = 'alienTorso'
743    t.pelvis_model = 'alienPelvis'
744    t.upper_arm_model = 'alienUpperArm'
745    t.forearm_model = 'alienForeArm'
746    t.hand_model = 'alienHand'
747    t.upper_leg_model = 'alienUpperLeg'
748    t.lower_leg_model = 'alienLowerLeg'
749    t.toes_model = 'alienToes'
750    alien_sounds = ['alien1', 'alien2', 'alien3', 'alien4']
751    alien_hit_sounds = ['alienHit1', 'alienHit2']
752    t.attack_sounds = alien_sounds
753    t.jump_sounds = alien_sounds
754    t.impact_sounds = alien_hit_sounds
755    t.death_sounds = ['alienDeath']
756    t.pickup_sounds = alien_sounds
757    t.fall_sounds = ['alienFall']
758    t.style = 'spaz'
759
760    # OldLady ###################################
761    t = Appearance('OldLady')
762    t.color_texture = 'oldLadyColor'
763    t.color_mask_texture = 'oldLadyColorMask'
764    t.default_color = (0.3, 0.5, 0.8)
765    t.default_highlight = (1, 0, 0)
766    t.icon_texture = 'oldLadyIcon'
767    t.icon_mask_texture = 'oldLadyIconColorMask'
768    t.head_model = 'oldLadyHead'
769    t.torso_model = 'oldLadyTorso'
770    t.pelvis_model = 'oldLadyPelvis'
771    t.upper_arm_model = 'oldLadyUpperArm'
772    t.forearm_model = 'oldLadyForeArm'
773    t.hand_model = 'oldLadyHand'
774    t.upper_leg_model = 'oldLadyUpperLeg'
775    t.lower_leg_model = 'oldLadyLowerLeg'
776    t.toes_model = 'oldLadyToes'
777    old_lady_sounds = ['oldLady1', 'oldLady2', 'oldLady3', 'oldLady4']
778    old_lady_hit_sounds = ['oldLadyHit1', 'oldLadyHit2']
779    t.attack_sounds = old_lady_sounds
780    t.jump_sounds = old_lady_sounds
781    t.impact_sounds = old_lady_hit_sounds
782    t.death_sounds = ['oldLadyDeath']
783    t.pickup_sounds = old_lady_sounds
784    t.fall_sounds = ['oldLadyFall']
785    t.style = 'spaz'
786
787    # Gladiator ###################################
788    t = Appearance('Gladiator')
789    t.color_texture = 'gladiatorColor'
790    t.color_mask_texture = 'gladiatorColorMask'
791    t.default_color = (0.3, 0.5, 0.8)
792    t.default_highlight = (1, 0, 0)
793    t.icon_texture = 'gladiatorIcon'
794    t.icon_mask_texture = 'gladiatorIconColorMask'
795    t.head_model = 'gladiatorHead'
796    t.torso_model = 'gladiatorTorso'
797    t.pelvis_model = 'gladiatorPelvis'
798    t.upper_arm_model = 'gladiatorUpperArm'
799    t.forearm_model = 'gladiatorForeArm'
800    t.hand_model = 'gladiatorHand'
801    t.upper_leg_model = 'gladiatorUpperLeg'
802    t.lower_leg_model = 'gladiatorLowerLeg'
803    t.toes_model = 'gladiatorToes'
804    gladiator_sounds = ['gladiator1', 'gladiator2', 'gladiator3', 'gladiator4']
805    gladiator_hit_sounds = ['gladiatorHit1', 'gladiatorHit2']
806    t.attack_sounds = gladiator_sounds
807    t.jump_sounds = gladiator_sounds
808    t.impact_sounds = gladiator_hit_sounds
809    t.death_sounds = ['gladiatorDeath']
810    t.pickup_sounds = gladiator_sounds
811    t.fall_sounds = ['gladiatorFall']
812    t.style = 'spaz'
813
814    # Wrestler ###################################
815    t = Appearance('Wrestler')
816    t.color_texture = 'wrestlerColor'
817    t.color_mask_texture = 'wrestlerColorMask'
818    t.default_color = (0.3, 0.5, 0.8)
819    t.default_highlight = (1, 0, 0)
820    t.icon_texture = 'wrestlerIcon'
821    t.icon_mask_texture = 'wrestlerIconColorMask'
822    t.head_model = 'wrestlerHead'
823    t.torso_model = 'wrestlerTorso'
824    t.pelvis_model = 'wrestlerPelvis'
825    t.upper_arm_model = 'wrestlerUpperArm'
826    t.forearm_model = 'wrestlerForeArm'
827    t.hand_model = 'wrestlerHand'
828    t.upper_leg_model = 'wrestlerUpperLeg'
829    t.lower_leg_model = 'wrestlerLowerLeg'
830    t.toes_model = 'wrestlerToes'
831    wrestler_sounds = ['wrestler1', 'wrestler2', 'wrestler3', 'wrestler4']
832    wrestler_hit_sounds = ['wrestlerHit1', 'wrestlerHit2']
833    t.attack_sounds = wrestler_sounds
834    t.jump_sounds = wrestler_sounds
835    t.impact_sounds = wrestler_hit_sounds
836    t.death_sounds = ['wrestlerDeath']
837    t.pickup_sounds = wrestler_sounds
838    t.fall_sounds = ['wrestlerFall']
839    t.style = 'spaz'
840
841    # OperaSinger ###################################
842    t = Appearance('Gretel')
843    t.color_texture = 'operaSingerColor'
844    t.color_mask_texture = 'operaSingerColorMask'
845    t.default_color = (0.3, 0.5, 0.8)
846    t.default_highlight = (1, 0, 0)
847    t.icon_texture = 'operaSingerIcon'
848    t.icon_mask_texture = 'operaSingerIconColorMask'
849    t.head_model = 'operaSingerHead'
850    t.torso_model = 'operaSingerTorso'
851    t.pelvis_model = 'operaSingerPelvis'
852    t.upper_arm_model = 'operaSingerUpperArm'
853    t.forearm_model = 'operaSingerForeArm'
854    t.hand_model = 'operaSingerHand'
855    t.upper_leg_model = 'operaSingerUpperLeg'
856    t.lower_leg_model = 'operaSingerLowerLeg'
857    t.toes_model = 'operaSingerToes'
858    opera_singer_sounds = [
859        'operaSinger1', 'operaSinger2', 'operaSinger3', 'operaSinger4'
860    ]
861    opera_singer_hit_sounds = ['operaSingerHit1', 'operaSingerHit2']
862    t.attack_sounds = opera_singer_sounds
863    t.jump_sounds = opera_singer_sounds
864    t.impact_sounds = opera_singer_hit_sounds
865    t.death_sounds = ['operaSingerDeath']
866    t.pickup_sounds = opera_singer_sounds
867    t.fall_sounds = ['operaSingerFall']
868    t.style = 'spaz'
869
870    # Pixie ###################################
871    t = Appearance('Pixel')
872    t.color_texture = 'pixieColor'
873    t.color_mask_texture = 'pixieColorMask'
874    t.default_color = (0, 1, 0.7)
875    t.default_highlight = (0.65, 0.35, 0.75)
876    t.icon_texture = 'pixieIcon'
877    t.icon_mask_texture = 'pixieIconColorMask'
878    t.head_model = 'pixieHead'
879    t.torso_model = 'pixieTorso'
880    t.pelvis_model = 'pixiePelvis'
881    t.upper_arm_model = 'pixieUpperArm'
882    t.forearm_model = 'pixieForeArm'
883    t.hand_model = 'pixieHand'
884    t.upper_leg_model = 'pixieUpperLeg'
885    t.lower_leg_model = 'pixieLowerLeg'
886    t.toes_model = 'pixieToes'
887    pixie_sounds = ['pixie1', 'pixie2', 'pixie3', 'pixie4']
888    pixie_hit_sounds = ['pixieHit1', 'pixieHit2']
889    t.attack_sounds = pixie_sounds
890    t.jump_sounds = pixie_sounds
891    t.impact_sounds = pixie_hit_sounds
892    t.death_sounds = ['pixieDeath']
893    t.pickup_sounds = pixie_sounds
894    t.fall_sounds = ['pixieFall']
895    t.style = 'pixie'
896
897    # Robot ###################################
898    t = Appearance('Robot')
899    t.color_texture = 'robotColor'
900    t.color_mask_texture = 'robotColorMask'
901    t.default_color = (0.3, 0.5, 0.8)
902    t.default_highlight = (1, 0, 0)
903    t.icon_texture = 'robotIcon'
904    t.icon_mask_texture = 'robotIconColorMask'
905    t.head_model = 'robotHead'
906    t.torso_model = 'robotTorso'
907    t.pelvis_model = 'robotPelvis'
908    t.upper_arm_model = 'robotUpperArm'
909    t.forearm_model = 'robotForeArm'
910    t.hand_model = 'robotHand'
911    t.upper_leg_model = 'robotUpperLeg'
912    t.lower_leg_model = 'robotLowerLeg'
913    t.toes_model = 'robotToes'
914    robot_sounds = ['robot1', 'robot2', 'robot3', 'robot4']
915    robot_hit_sounds = ['robotHit1', 'robotHit2']
916    t.attack_sounds = robot_sounds
917    t.jump_sounds = robot_sounds
918    t.impact_sounds = robot_hit_sounds
919    t.death_sounds = ['robotDeath']
920    t.pickup_sounds = robot_sounds
921    t.fall_sounds = ['robotFall']
922    t.style = 'spaz'
923
924    # Bunny ###################################
925    t = Appearance('Easter Bunny')
926    t.color_texture = 'bunnyColor'
927    t.color_mask_texture = 'bunnyColorMask'
928    t.default_color = (1, 1, 1)
929    t.default_highlight = (1, 0.5, 0.5)
930    t.icon_texture = 'bunnyIcon'
931    t.icon_mask_texture = 'bunnyIconColorMask'
932    t.head_model = 'bunnyHead'
933    t.torso_model = 'bunnyTorso'
934    t.pelvis_model = 'bunnyPelvis'
935    t.upper_arm_model = 'bunnyUpperArm'
936    t.forearm_model = 'bunnyForeArm'
937    t.hand_model = 'bunnyHand'
938    t.upper_leg_model = 'bunnyUpperLeg'
939    t.lower_leg_model = 'bunnyLowerLeg'
940    t.toes_model = 'bunnyToes'
941    bunny_sounds = ['bunny1', 'bunny2', 'bunny3', 'bunny4']
942    bunny_hit_sounds = ['bunnyHit1', 'bunnyHit2']
943    t.attack_sounds = bunny_sounds
944    t.jump_sounds = ['bunnyJump']
945    t.impact_sounds = bunny_hit_sounds
946    t.death_sounds = ['bunnyDeath']
947    t.pickup_sounds = bunny_sounds
948    t.fall_sounds = ['bunnyFall']
949    t.style = 'bunny'
def get_appearances(include_locked: bool = False) -> list[str]:
16def get_appearances(include_locked: bool = False) -> list[str]:
17    """Get the list of available spaz appearances."""
18    # pylint: disable=too-many-statements
19    # pylint: disable=too-many-branches
20    disallowed = []
21    if not include_locked:
22        # hmm yeah this'll be tough to hack...
23        if not _ba.get_purchased('characters.santa'):
24            disallowed.append('Santa Claus')
25        if not _ba.get_purchased('characters.frosty'):
26            disallowed.append('Frosty')
27        if not _ba.get_purchased('characters.bones'):
28            disallowed.append('Bones')
29        if not _ba.get_purchased('characters.bernard'):
30            disallowed.append('Bernard')
31        if not _ba.get_purchased('characters.pixie'):
32            disallowed.append('Pixel')
33        if not _ba.get_purchased('characters.pascal'):
34            disallowed.append('Pascal')
35        if not _ba.get_purchased('characters.actionhero'):
36            disallowed.append('Todd McBurton')
37        if not _ba.get_purchased('characters.taobaomascot'):
38            disallowed.append('Taobao Mascot')
39        if not _ba.get_purchased('characters.agent'):
40            disallowed.append('Agent Johnson')
41        if not _ba.get_purchased('characters.jumpsuit'):
42            disallowed.append('Lee')
43        if not _ba.get_purchased('characters.assassin'):
44            disallowed.append('Zola')
45        if not _ba.get_purchased('characters.wizard'):
46            disallowed.append('Grumbledorf')
47        if not _ba.get_purchased('characters.cowboy'):
48            disallowed.append('Butch')
49        if not _ba.get_purchased('characters.witch'):
50            disallowed.append('Witch')
51        if not _ba.get_purchased('characters.warrior'):
52            disallowed.append('Warrior')
53        if not _ba.get_purchased('characters.superhero'):
54            disallowed.append('Middle-Man')
55        if not _ba.get_purchased('characters.alien'):
56            disallowed.append('Alien')
57        if not _ba.get_purchased('characters.oldlady'):
58            disallowed.append('OldLady')
59        if not _ba.get_purchased('characters.gladiator'):
60            disallowed.append('Gladiator')
61        if not _ba.get_purchased('characters.wrestler'):
62            disallowed.append('Wrestler')
63        if not _ba.get_purchased('characters.operasinger'):
64            disallowed.append('Gretel')
65        if not _ba.get_purchased('characters.robot'):
66            disallowed.append('Robot')
67        if not _ba.get_purchased('characters.cyborg'):
68            disallowed.append('B-9000')
69        if not _ba.get_purchased('characters.bunny'):
70            disallowed.append('Easter Bunny')
71        if not _ba.get_purchased('characters.kronk'):
72            disallowed.append('Kronk')
73        if not _ba.get_purchased('characters.zoe'):
74            disallowed.append('Zoe')
75        if not _ba.get_purchased('characters.jackmorgan'):
76            disallowed.append('Jack Morgan')
77        if not _ba.get_purchased('characters.mel'):
78            disallowed.append('Mel')
79        if not _ba.get_purchased('characters.snakeshadow'):
80            disallowed.append('Snake Shadow')
81    return [
82        s for s in list(ba.app.spaz_appearances.keys()) if s not in disallowed
83    ]

Get the list of available spaz appearances.

class Appearance:
 86class Appearance:
 87    """Create and fill out one of these suckers to define a spaz appearance"""
 88
 89    def __init__(self, name: str):
 90        self.name = name
 91        if self.name in ba.app.spaz_appearances:
 92            raise Exception('spaz appearance name "' + self.name +
 93                            '" already exists.')
 94        ba.app.spaz_appearances[self.name] = self
 95        self.color_texture = ''
 96        self.color_mask_texture = ''
 97        self.icon_texture = ''
 98        self.icon_mask_texture = ''
 99        self.head_model = ''
100        self.torso_model = ''
101        self.pelvis_model = ''
102        self.upper_arm_model = ''
103        self.forearm_model = ''
104        self.hand_model = ''
105        self.upper_leg_model = ''
106        self.lower_leg_model = ''
107        self.toes_model = ''
108        self.jump_sounds: list[str] = []
109        self.attack_sounds: list[str] = []
110        self.impact_sounds: list[str] = []
111        self.death_sounds: list[str] = []
112        self.pickup_sounds: list[str] = []
113        self.fall_sounds: list[str] = []
114        self.style = 'spaz'
115        self.default_color: tuple[float, float, float] | None = None
116        self.default_highlight: tuple[float, float, float] | None = None

Create and fill out one of these suckers to define a spaz appearance

Appearance(name: str)
 89    def __init__(self, name: str):
 90        self.name = name
 91        if self.name in ba.app.spaz_appearances:
 92            raise Exception('spaz appearance name "' + self.name +
 93                            '" already exists.')
 94        ba.app.spaz_appearances[self.name] = self
 95        self.color_texture = ''
 96        self.color_mask_texture = ''
 97        self.icon_texture = ''
 98        self.icon_mask_texture = ''
 99        self.head_model = ''
100        self.torso_model = ''
101        self.pelvis_model = ''
102        self.upper_arm_model = ''
103        self.forearm_model = ''
104        self.hand_model = ''
105        self.upper_leg_model = ''
106        self.lower_leg_model = ''
107        self.toes_model = ''
108        self.jump_sounds: list[str] = []
109        self.attack_sounds: list[str] = []
110        self.impact_sounds: list[str] = []
111        self.death_sounds: list[str] = []
112        self.pickup_sounds: list[str] = []
113        self.fall_sounds: list[str] = []
114        self.style = 'spaz'
115        self.default_color: tuple[float, float, float] | None = None
116        self.default_highlight: tuple[float, float, float] | None = None
def register_appearances() -> None:
119def register_appearances() -> None:
120    """Register our builtin spaz appearances."""
121
122    # this is quite ugly but will be going away so not worth cleaning up
123    # pylint: disable=invalid-name
124    # pylint: disable=too-many-locals
125    # pylint: disable=too-many-statements
126
127    # Spaz #######################################
128    t = Appearance('Spaz')
129    t.color_texture = 'neoSpazColor'
130    t.color_mask_texture = 'neoSpazColorMask'
131    t.icon_texture = 'neoSpazIcon'
132    t.icon_mask_texture = 'neoSpazIconColorMask'
133    t.head_model = 'neoSpazHead'
134    t.torso_model = 'neoSpazTorso'
135    t.pelvis_model = 'neoSpazPelvis'
136    t.upper_arm_model = 'neoSpazUpperArm'
137    t.forearm_model = 'neoSpazForeArm'
138    t.hand_model = 'neoSpazHand'
139    t.upper_leg_model = 'neoSpazUpperLeg'
140    t.lower_leg_model = 'neoSpazLowerLeg'
141    t.toes_model = 'neoSpazToes'
142    t.jump_sounds = ['spazJump01', 'spazJump02', 'spazJump03', 'spazJump04']
143    t.attack_sounds = [
144        'spazAttack01', 'spazAttack02', 'spazAttack03', 'spazAttack04'
145    ]
146    t.impact_sounds = [
147        'spazImpact01', 'spazImpact02', 'spazImpact03', 'spazImpact04'
148    ]
149    t.death_sounds = ['spazDeath01']
150    t.pickup_sounds = ['spazPickup01']
151    t.fall_sounds = ['spazFall01']
152    t.style = 'spaz'
153
154    # Zoe #####################################
155    t = Appearance('Zoe')
156    t.color_texture = 'zoeColor'
157    t.color_mask_texture = 'zoeColorMask'
158    t.default_color = (0.6, 0.6, 0.6)
159    t.default_highlight = (0, 1, 0)
160    t.icon_texture = 'zoeIcon'
161    t.icon_mask_texture = 'zoeIconColorMask'
162    t.head_model = 'zoeHead'
163    t.torso_model = 'zoeTorso'
164    t.pelvis_model = 'zoePelvis'
165    t.upper_arm_model = 'zoeUpperArm'
166    t.forearm_model = 'zoeForeArm'
167    t.hand_model = 'zoeHand'
168    t.upper_leg_model = 'zoeUpperLeg'
169    t.lower_leg_model = 'zoeLowerLeg'
170    t.toes_model = 'zoeToes'
171    t.jump_sounds = ['zoeJump01', 'zoeJump02', 'zoeJump03']
172    t.attack_sounds = [
173        'zoeAttack01', 'zoeAttack02', 'zoeAttack03', 'zoeAttack04'
174    ]
175    t.impact_sounds = [
176        'zoeImpact01', 'zoeImpact02', 'zoeImpact03', 'zoeImpact04'
177    ]
178    t.death_sounds = ['zoeDeath01']
179    t.pickup_sounds = ['zoePickup01']
180    t.fall_sounds = ['zoeFall01']
181    t.style = 'female'
182
183    # Ninja ##########################################
184    t = Appearance('Snake Shadow')
185    t.color_texture = 'ninjaColor'
186    t.color_mask_texture = 'ninjaColorMask'
187    t.default_color = (1, 1, 1)
188    t.default_highlight = (0.55, 0.8, 0.55)
189    t.icon_texture = 'ninjaIcon'
190    t.icon_mask_texture = 'ninjaIconColorMask'
191    t.head_model = 'ninjaHead'
192    t.torso_model = 'ninjaTorso'
193    t.pelvis_model = 'ninjaPelvis'
194    t.upper_arm_model = 'ninjaUpperArm'
195    t.forearm_model = 'ninjaForeArm'
196    t.hand_model = 'ninjaHand'
197    t.upper_leg_model = 'ninjaUpperLeg'
198    t.lower_leg_model = 'ninjaLowerLeg'
199    t.toes_model = 'ninjaToes'
200    ninja_attacks = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
201    ninja_hits = ['ninjaHit' + str(i + 1) + '' for i in range(8)]
202    ninja_jumps = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
203    t.jump_sounds = ninja_jumps
204    t.attack_sounds = ninja_attacks
205    t.impact_sounds = ninja_hits
206    t.death_sounds = ['ninjaDeath1']
207    t.pickup_sounds = ninja_attacks
208    t.fall_sounds = ['ninjaFall1']
209    t.style = 'ninja'
210
211    # Barbarian #####################################
212    t = Appearance('Kronk')
213    t.color_texture = 'kronk'
214    t.color_mask_texture = 'kronkColorMask'
215    t.default_color = (0.4, 0.5, 0.4)
216    t.default_highlight = (1, 0.5, 0.3)
217    t.icon_texture = 'kronkIcon'
218    t.icon_mask_texture = 'kronkIconColorMask'
219    t.head_model = 'kronkHead'
220    t.torso_model = 'kronkTorso'
221    t.pelvis_model = 'kronkPelvis'
222    t.upper_arm_model = 'kronkUpperArm'
223    t.forearm_model = 'kronkForeArm'
224    t.hand_model = 'kronkHand'
225    t.upper_leg_model = 'kronkUpperLeg'
226    t.lower_leg_model = 'kronkLowerLeg'
227    t.toes_model = 'kronkToes'
228    kronk_sounds = [
229        'kronk1', 'kronk2', 'kronk3', 'kronk4', 'kronk5', 'kronk6', 'kronk7',
230        'kronk8', 'kronk9', 'kronk10'
231    ]
232    t.jump_sounds = kronk_sounds
233    t.attack_sounds = kronk_sounds
234    t.impact_sounds = kronk_sounds
235    t.death_sounds = ['kronkDeath']
236    t.pickup_sounds = kronk_sounds
237    t.fall_sounds = ['kronkFall']
238    t.style = 'kronk'
239
240    # Chef ###########################################
241    t = Appearance('Mel')
242    t.color_texture = 'melColor'
243    t.color_mask_texture = 'melColorMask'
244    t.default_color = (1, 1, 1)
245    t.default_highlight = (0.1, 0.6, 0.1)
246    t.icon_texture = 'melIcon'
247    t.icon_mask_texture = 'melIconColorMask'
248    t.head_model = 'melHead'
249    t.torso_model = 'melTorso'
250    t.pelvis_model = 'kronkPelvis'
251    t.upper_arm_model = 'melUpperArm'
252    t.forearm_model = 'melForeArm'
253    t.hand_model = 'melHand'
254    t.upper_leg_model = 'melUpperLeg'
255    t.lower_leg_model = 'melLowerLeg'
256    t.toes_model = 'melToes'
257    mel_sounds = [
258        'mel01', 'mel02', 'mel03', 'mel04', 'mel05', 'mel06', 'mel07', 'mel08',
259        'mel09', 'mel10'
260    ]
261    t.attack_sounds = mel_sounds
262    t.jump_sounds = mel_sounds
263    t.impact_sounds = mel_sounds
264    t.death_sounds = ['melDeath01']
265    t.pickup_sounds = mel_sounds
266    t.fall_sounds = ['melFall01']
267    t.style = 'mel'
268
269    # Pirate #######################################
270    t = Appearance('Jack Morgan')
271    t.color_texture = 'jackColor'
272    t.color_mask_texture = 'jackColorMask'
273    t.default_color = (1, 0.2, 0.1)
274    t.default_highlight = (1, 1, 0)
275    t.icon_texture = 'jackIcon'
276    t.icon_mask_texture = 'jackIconColorMask'
277    t.head_model = 'jackHead'
278    t.torso_model = 'jackTorso'
279    t.pelvis_model = 'kronkPelvis'
280    t.upper_arm_model = 'jackUpperArm'
281    t.forearm_model = 'jackForeArm'
282    t.hand_model = 'jackHand'
283    t.upper_leg_model = 'jackUpperLeg'
284    t.lower_leg_model = 'jackLowerLeg'
285    t.toes_model = 'jackToes'
286    hit_sounds = [
287        'jackHit01', 'jackHit02', 'jackHit03', 'jackHit04', 'jackHit05',
288        'jackHit06', 'jackHit07'
289    ]
290    sounds = ['jack01', 'jack02', 'jack03', 'jack04', 'jack05', 'jack06']
291    t.attack_sounds = sounds
292    t.jump_sounds = sounds
293    t.impact_sounds = hit_sounds
294    t.death_sounds = ['jackDeath01']
295    t.pickup_sounds = sounds
296    t.fall_sounds = ['jackFall01']
297    t.style = 'pirate'
298
299    # Santa ######################################
300    t = Appearance('Santa Claus')
301    t.color_texture = 'santaColor'
302    t.color_mask_texture = 'santaColorMask'
303    t.default_color = (1, 0, 0)
304    t.default_highlight = (1, 1, 1)
305    t.icon_texture = 'santaIcon'
306    t.icon_mask_texture = 'santaIconColorMask'
307    t.head_model = 'santaHead'
308    t.torso_model = 'santaTorso'
309    t.pelvis_model = 'kronkPelvis'
310    t.upper_arm_model = 'santaUpperArm'
311    t.forearm_model = 'santaForeArm'
312    t.hand_model = 'santaHand'
313    t.upper_leg_model = 'santaUpperLeg'
314    t.lower_leg_model = 'santaLowerLeg'
315    t.toes_model = 'santaToes'
316    hit_sounds = ['santaHit01', 'santaHit02', 'santaHit03', 'santaHit04']
317    sounds = ['santa01', 'santa02', 'santa03', 'santa04', 'santa05']
318    t.attack_sounds = sounds
319    t.jump_sounds = sounds
320    t.impact_sounds = hit_sounds
321    t.death_sounds = ['santaDeath']
322    t.pickup_sounds = sounds
323    t.fall_sounds = ['santaFall']
324    t.style = 'santa'
325
326    # Snowman ###################################
327    t = Appearance('Frosty')
328    t.color_texture = 'frostyColor'
329    t.color_mask_texture = 'frostyColorMask'
330    t.default_color = (0.5, 0.5, 1)
331    t.default_highlight = (1, 0.5, 0)
332    t.icon_texture = 'frostyIcon'
333    t.icon_mask_texture = 'frostyIconColorMask'
334    t.head_model = 'frostyHead'
335    t.torso_model = 'frostyTorso'
336    t.pelvis_model = 'frostyPelvis'
337    t.upper_arm_model = 'frostyUpperArm'
338    t.forearm_model = 'frostyForeArm'
339    t.hand_model = 'frostyHand'
340    t.upper_leg_model = 'frostyUpperLeg'
341    t.lower_leg_model = 'frostyLowerLeg'
342    t.toes_model = 'frostyToes'
343    frosty_sounds = [
344        'frosty01', 'frosty02', 'frosty03', 'frosty04', 'frosty05'
345    ]
346    frosty_hit_sounds = ['frostyHit01', 'frostyHit02', 'frostyHit03']
347    t.attack_sounds = frosty_sounds
348    t.jump_sounds = frosty_sounds
349    t.impact_sounds = frosty_hit_sounds
350    t.death_sounds = ['frostyDeath']
351    t.pickup_sounds = frosty_sounds
352    t.fall_sounds = ['frostyFall']
353    t.style = 'frosty'
354
355    # Skeleton ################################
356    t = Appearance('Bones')
357    t.color_texture = 'bonesColor'
358    t.color_mask_texture = 'bonesColorMask'
359    t.default_color = (0.6, 0.9, 1)
360    t.default_highlight = (0.6, 0.9, 1)
361    t.icon_texture = 'bonesIcon'
362    t.icon_mask_texture = 'bonesIconColorMask'
363    t.head_model = 'bonesHead'
364    t.torso_model = 'bonesTorso'
365    t.pelvis_model = 'bonesPelvis'
366    t.upper_arm_model = 'bonesUpperArm'
367    t.forearm_model = 'bonesForeArm'
368    t.hand_model = 'bonesHand'
369    t.upper_leg_model = 'bonesUpperLeg'
370    t.lower_leg_model = 'bonesLowerLeg'
371    t.toes_model = 'bonesToes'
372    bones_sounds = ['bones1', 'bones2', 'bones3']
373    bones_hit_sounds = ['bones1', 'bones2', 'bones3']
374    t.attack_sounds = bones_sounds
375    t.jump_sounds = bones_sounds
376    t.impact_sounds = bones_hit_sounds
377    t.death_sounds = ['bonesDeath']
378    t.pickup_sounds = bones_sounds
379    t.fall_sounds = ['bonesFall']
380    t.style = 'bones'
381
382    # Bear ###################################
383    t = Appearance('Bernard')
384    t.color_texture = 'bearColor'
385    t.color_mask_texture = 'bearColorMask'
386    t.default_color = (0.7, 0.5, 0.0)
387    t.icon_texture = 'bearIcon'
388    t.icon_mask_texture = 'bearIconColorMask'
389    t.head_model = 'bearHead'
390    t.torso_model = 'bearTorso'
391    t.pelvis_model = 'bearPelvis'
392    t.upper_arm_model = 'bearUpperArm'
393    t.forearm_model = 'bearForeArm'
394    t.hand_model = 'bearHand'
395    t.upper_leg_model = 'bearUpperLeg'
396    t.lower_leg_model = 'bearLowerLeg'
397    t.toes_model = 'bearToes'
398    bear_sounds = ['bear1', 'bear2', 'bear3', 'bear4']
399    bear_hit_sounds = ['bearHit1', 'bearHit2']
400    t.attack_sounds = bear_sounds
401    t.jump_sounds = bear_sounds
402    t.impact_sounds = bear_hit_sounds
403    t.death_sounds = ['bearDeath']
404    t.pickup_sounds = bear_sounds
405    t.fall_sounds = ['bearFall']
406    t.style = 'bear'
407
408    # Penguin ###################################
409    t = Appearance('Pascal')
410    t.color_texture = 'penguinColor'
411    t.color_mask_texture = 'penguinColorMask'
412    t.default_color = (0.3, 0.5, 0.8)
413    t.default_highlight = (1, 0, 0)
414    t.icon_texture = 'penguinIcon'
415    t.icon_mask_texture = 'penguinIconColorMask'
416    t.head_model = 'penguinHead'
417    t.torso_model = 'penguinTorso'
418    t.pelvis_model = 'penguinPelvis'
419    t.upper_arm_model = 'penguinUpperArm'
420    t.forearm_model = 'penguinForeArm'
421    t.hand_model = 'penguinHand'
422    t.upper_leg_model = 'penguinUpperLeg'
423    t.lower_leg_model = 'penguinLowerLeg'
424    t.toes_model = 'penguinToes'
425    penguin_sounds = ['penguin1', 'penguin2', 'penguin3', 'penguin4']
426    penguin_hit_sounds = ['penguinHit1', 'penguinHit2']
427    t.attack_sounds = penguin_sounds
428    t.jump_sounds = penguin_sounds
429    t.impact_sounds = penguin_hit_sounds
430    t.death_sounds = ['penguinDeath']
431    t.pickup_sounds = penguin_sounds
432    t.fall_sounds = ['penguinFall']
433    t.style = 'penguin'
434
435    # Ali ###################################
436    t = Appearance('Taobao Mascot')
437    t.color_texture = 'aliColor'
438    t.color_mask_texture = 'aliColorMask'
439    t.default_color = (1, 0.5, 0)
440    t.default_highlight = (1, 1, 1)
441    t.icon_texture = 'aliIcon'
442    t.icon_mask_texture = 'aliIconColorMask'
443    t.head_model = 'aliHead'
444    t.torso_model = 'aliTorso'
445    t.pelvis_model = 'aliPelvis'
446    t.upper_arm_model = 'aliUpperArm'
447    t.forearm_model = 'aliForeArm'
448    t.hand_model = 'aliHand'
449    t.upper_leg_model = 'aliUpperLeg'
450    t.lower_leg_model = 'aliLowerLeg'
451    t.toes_model = 'aliToes'
452    ali_sounds = ['ali1', 'ali2', 'ali3', 'ali4']
453    ali_hit_sounds = ['aliHit1', 'aliHit2']
454    t.attack_sounds = ali_sounds
455    t.jump_sounds = ali_sounds
456    t.impact_sounds = ali_hit_sounds
457    t.death_sounds = ['aliDeath']
458    t.pickup_sounds = ali_sounds
459    t.fall_sounds = ['aliFall']
460    t.style = 'ali'
461
462    # cyborg ###################################
463    t = Appearance('B-9000')
464    t.color_texture = 'cyborgColor'
465    t.color_mask_texture = 'cyborgColorMask'
466    t.default_color = (0.5, 0.5, 0.5)
467    t.default_highlight = (1, 0, 0)
468    t.icon_texture = 'cyborgIcon'
469    t.icon_mask_texture = 'cyborgIconColorMask'
470    t.head_model = 'cyborgHead'
471    t.torso_model = 'cyborgTorso'
472    t.pelvis_model = 'cyborgPelvis'
473    t.upper_arm_model = 'cyborgUpperArm'
474    t.forearm_model = 'cyborgForeArm'
475    t.hand_model = 'cyborgHand'
476    t.upper_leg_model = 'cyborgUpperLeg'
477    t.lower_leg_model = 'cyborgLowerLeg'
478    t.toes_model = 'cyborgToes'
479    cyborg_sounds = ['cyborg1', 'cyborg2', 'cyborg3', 'cyborg4']
480    cyborg_hit_sounds = ['cyborgHit1', 'cyborgHit2']
481    t.attack_sounds = cyborg_sounds
482    t.jump_sounds = cyborg_sounds
483    t.impact_sounds = cyborg_hit_sounds
484    t.death_sounds = ['cyborgDeath']
485    t.pickup_sounds = cyborg_sounds
486    t.fall_sounds = ['cyborgFall']
487    t.style = 'cyborg'
488
489    # Agent ###################################
490    t = Appearance('Agent Johnson')
491    t.color_texture = 'agentColor'
492    t.color_mask_texture = 'agentColorMask'
493    t.default_color = (0.3, 0.3, 0.33)
494    t.default_highlight = (1, 0.5, 0.3)
495    t.icon_texture = 'agentIcon'
496    t.icon_mask_texture = 'agentIconColorMask'
497    t.head_model = 'agentHead'
498    t.torso_model = 'agentTorso'
499    t.pelvis_model = 'agentPelvis'
500    t.upper_arm_model = 'agentUpperArm'
501    t.forearm_model = 'agentForeArm'
502    t.hand_model = 'agentHand'
503    t.upper_leg_model = 'agentUpperLeg'
504    t.lower_leg_model = 'agentLowerLeg'
505    t.toes_model = 'agentToes'
506    agent_sounds = ['agent1', 'agent2', 'agent3', 'agent4']
507    agent_hit_sounds = ['agentHit1', 'agentHit2']
508    t.attack_sounds = agent_sounds
509    t.jump_sounds = agent_sounds
510    t.impact_sounds = agent_hit_sounds
511    t.death_sounds = ['agentDeath']
512    t.pickup_sounds = agent_sounds
513    t.fall_sounds = ['agentFall']
514    t.style = 'agent'
515
516    # Jumpsuit ###################################
517    t = Appearance('Lee')
518    t.color_texture = 'jumpsuitColor'
519    t.color_mask_texture = 'jumpsuitColorMask'
520    t.default_color = (0.3, 0.5, 0.8)
521    t.default_highlight = (1, 0, 0)
522    t.icon_texture = 'jumpsuitIcon'
523    t.icon_mask_texture = 'jumpsuitIconColorMask'
524    t.head_model = 'jumpsuitHead'
525    t.torso_model = 'jumpsuitTorso'
526    t.pelvis_model = 'jumpsuitPelvis'
527    t.upper_arm_model = 'jumpsuitUpperArm'
528    t.forearm_model = 'jumpsuitForeArm'
529    t.hand_model = 'jumpsuitHand'
530    t.upper_leg_model = 'jumpsuitUpperLeg'
531    t.lower_leg_model = 'jumpsuitLowerLeg'
532    t.toes_model = 'jumpsuitToes'
533    jumpsuit_sounds = ['jumpsuit1', 'jumpsuit2', 'jumpsuit3', 'jumpsuit4']
534    jumpsuit_hit_sounds = ['jumpsuitHit1', 'jumpsuitHit2']
535    t.attack_sounds = jumpsuit_sounds
536    t.jump_sounds = jumpsuit_sounds
537    t.impact_sounds = jumpsuit_hit_sounds
538    t.death_sounds = ['jumpsuitDeath']
539    t.pickup_sounds = jumpsuit_sounds
540    t.fall_sounds = ['jumpsuitFall']
541    t.style = 'spaz'
542
543    # ActionHero ###################################
544    t = Appearance('Todd McBurton')
545    t.color_texture = 'actionHeroColor'
546    t.color_mask_texture = 'actionHeroColorMask'
547    t.default_color = (0.3, 0.5, 0.8)
548    t.default_highlight = (1, 0, 0)
549    t.icon_texture = 'actionHeroIcon'
550    t.icon_mask_texture = 'actionHeroIconColorMask'
551    t.head_model = 'actionHeroHead'
552    t.torso_model = 'actionHeroTorso'
553    t.pelvis_model = 'actionHeroPelvis'
554    t.upper_arm_model = 'actionHeroUpperArm'
555    t.forearm_model = 'actionHeroForeArm'
556    t.hand_model = 'actionHeroHand'
557    t.upper_leg_model = 'actionHeroUpperLeg'
558    t.lower_leg_model = 'actionHeroLowerLeg'
559    t.toes_model = 'actionHeroToes'
560    action_hero_sounds = [
561        'actionHero1', 'actionHero2', 'actionHero3', 'actionHero4'
562    ]
563    action_hero_hit_sounds = ['actionHeroHit1', 'actionHeroHit2']
564    t.attack_sounds = action_hero_sounds
565    t.jump_sounds = action_hero_sounds
566    t.impact_sounds = action_hero_hit_sounds
567    t.death_sounds = ['actionHeroDeath']
568    t.pickup_sounds = action_hero_sounds
569    t.fall_sounds = ['actionHeroFall']
570    t.style = 'spaz'
571
572    # Assassin ###################################
573    t = Appearance('Zola')
574    t.color_texture = 'assassinColor'
575    t.color_mask_texture = 'assassinColorMask'
576    t.default_color = (0.3, 0.5, 0.8)
577    t.default_highlight = (1, 0, 0)
578    t.icon_texture = 'assassinIcon'
579    t.icon_mask_texture = 'assassinIconColorMask'
580    t.head_model = 'assassinHead'
581    t.torso_model = 'assassinTorso'
582    t.pelvis_model = 'assassinPelvis'
583    t.upper_arm_model = 'assassinUpperArm'
584    t.forearm_model = 'assassinForeArm'
585    t.hand_model = 'assassinHand'
586    t.upper_leg_model = 'assassinUpperLeg'
587    t.lower_leg_model = 'assassinLowerLeg'
588    t.toes_model = 'assassinToes'
589    assassin_sounds = ['assassin1', 'assassin2', 'assassin3', 'assassin4']
590    assassin_hit_sounds = ['assassinHit1', 'assassinHit2']
591    t.attack_sounds = assassin_sounds
592    t.jump_sounds = assassin_sounds
593    t.impact_sounds = assassin_hit_sounds
594    t.death_sounds = ['assassinDeath']
595    t.pickup_sounds = assassin_sounds
596    t.fall_sounds = ['assassinFall']
597    t.style = 'spaz'
598
599    # Wizard ###################################
600    t = Appearance('Grumbledorf')
601    t.color_texture = 'wizardColor'
602    t.color_mask_texture = 'wizardColorMask'
603    t.default_color = (0.2, 0.4, 1.0)
604    t.default_highlight = (0.06, 0.15, 0.4)
605    t.icon_texture = 'wizardIcon'
606    t.icon_mask_texture = 'wizardIconColorMask'
607    t.head_model = 'wizardHead'
608    t.torso_model = 'wizardTorso'
609    t.pelvis_model = 'wizardPelvis'
610    t.upper_arm_model = 'wizardUpperArm'
611    t.forearm_model = 'wizardForeArm'
612    t.hand_model = 'wizardHand'
613    t.upper_leg_model = 'wizardUpperLeg'
614    t.lower_leg_model = 'wizardLowerLeg'
615    t.toes_model = 'wizardToes'
616    wizard_sounds = ['wizard1', 'wizard2', 'wizard3', 'wizard4']
617    wizard_hit_sounds = ['wizardHit1', 'wizardHit2']
618    t.attack_sounds = wizard_sounds
619    t.jump_sounds = wizard_sounds
620    t.impact_sounds = wizard_hit_sounds
621    t.death_sounds = ['wizardDeath']
622    t.pickup_sounds = wizard_sounds
623    t.fall_sounds = ['wizardFall']
624    t.style = 'spaz'
625
626    # Cowboy ###################################
627    t = Appearance('Butch')
628    t.color_texture = 'cowboyColor'
629    t.color_mask_texture = 'cowboyColorMask'
630    t.default_color = (0.3, 0.5, 0.8)
631    t.default_highlight = (1, 0, 0)
632    t.icon_texture = 'cowboyIcon'
633    t.icon_mask_texture = 'cowboyIconColorMask'
634    t.head_model = 'cowboyHead'
635    t.torso_model = 'cowboyTorso'
636    t.pelvis_model = 'cowboyPelvis'
637    t.upper_arm_model = 'cowboyUpperArm'
638    t.forearm_model = 'cowboyForeArm'
639    t.hand_model = 'cowboyHand'
640    t.upper_leg_model = 'cowboyUpperLeg'
641    t.lower_leg_model = 'cowboyLowerLeg'
642    t.toes_model = 'cowboyToes'
643    cowboy_sounds = ['cowboy1', 'cowboy2', 'cowboy3', 'cowboy4']
644    cowboy_hit_sounds = ['cowboyHit1', 'cowboyHit2']
645    t.attack_sounds = cowboy_sounds
646    t.jump_sounds = cowboy_sounds
647    t.impact_sounds = cowboy_hit_sounds
648    t.death_sounds = ['cowboyDeath']
649    t.pickup_sounds = cowboy_sounds
650    t.fall_sounds = ['cowboyFall']
651    t.style = 'spaz'
652
653    # Witch ###################################
654    t = Appearance('Witch')
655    t.color_texture = 'witchColor'
656    t.color_mask_texture = 'witchColorMask'
657    t.default_color = (0.3, 0.5, 0.8)
658    t.default_highlight = (1, 0, 0)
659    t.icon_texture = 'witchIcon'
660    t.icon_mask_texture = 'witchIconColorMask'
661    t.head_model = 'witchHead'
662    t.torso_model = 'witchTorso'
663    t.pelvis_model = 'witchPelvis'
664    t.upper_arm_model = 'witchUpperArm'
665    t.forearm_model = 'witchForeArm'
666    t.hand_model = 'witchHand'
667    t.upper_leg_model = 'witchUpperLeg'
668    t.lower_leg_model = 'witchLowerLeg'
669    t.toes_model = 'witchToes'
670    witch_sounds = ['witch1', 'witch2', 'witch3', 'witch4']
671    witch_hit_sounds = ['witchHit1', 'witchHit2']
672    t.attack_sounds = witch_sounds
673    t.jump_sounds = witch_sounds
674    t.impact_sounds = witch_hit_sounds
675    t.death_sounds = ['witchDeath']
676    t.pickup_sounds = witch_sounds
677    t.fall_sounds = ['witchFall']
678    t.style = 'spaz'
679
680    # Warrior ###################################
681    t = Appearance('Warrior')
682    t.color_texture = 'warriorColor'
683    t.color_mask_texture = 'warriorColorMask'
684    t.default_color = (0.3, 0.5, 0.8)
685    t.default_highlight = (1, 0, 0)
686    t.icon_texture = 'warriorIcon'
687    t.icon_mask_texture = 'warriorIconColorMask'
688    t.head_model = 'warriorHead'
689    t.torso_model = 'warriorTorso'
690    t.pelvis_model = 'warriorPelvis'
691    t.upper_arm_model = 'warriorUpperArm'
692    t.forearm_model = 'warriorForeArm'
693    t.hand_model = 'warriorHand'
694    t.upper_leg_model = 'warriorUpperLeg'
695    t.lower_leg_model = 'warriorLowerLeg'
696    t.toes_model = 'warriorToes'
697    warrior_sounds = ['warrior1', 'warrior2', 'warrior3', 'warrior4']
698    warrior_hit_sounds = ['warriorHit1', 'warriorHit2']
699    t.attack_sounds = warrior_sounds
700    t.jump_sounds = warrior_sounds
701    t.impact_sounds = warrior_hit_sounds
702    t.death_sounds = ['warriorDeath']
703    t.pickup_sounds = warrior_sounds
704    t.fall_sounds = ['warriorFall']
705    t.style = 'spaz'
706
707    # Superhero ###################################
708    t = Appearance('Middle-Man')
709    t.color_texture = 'superheroColor'
710    t.color_mask_texture = 'superheroColorMask'
711    t.default_color = (0.3, 0.5, 0.8)
712    t.default_highlight = (1, 0, 0)
713    t.icon_texture = 'superheroIcon'
714    t.icon_mask_texture = 'superheroIconColorMask'
715    t.head_model = 'superheroHead'
716    t.torso_model = 'superheroTorso'
717    t.pelvis_model = 'superheroPelvis'
718    t.upper_arm_model = 'superheroUpperArm'
719    t.forearm_model = 'superheroForeArm'
720    t.hand_model = 'superheroHand'
721    t.upper_leg_model = 'superheroUpperLeg'
722    t.lower_leg_model = 'superheroLowerLeg'
723    t.toes_model = 'superheroToes'
724    superhero_sounds = ['superhero1', 'superhero2', 'superhero3', 'superhero4']
725    superhero_hit_sounds = ['superheroHit1', 'superheroHit2']
726    t.attack_sounds = superhero_sounds
727    t.jump_sounds = superhero_sounds
728    t.impact_sounds = superhero_hit_sounds
729    t.death_sounds = ['superheroDeath']
730    t.pickup_sounds = superhero_sounds
731    t.fall_sounds = ['superheroFall']
732    t.style = 'spaz'
733
734    # Alien ###################################
735    t = Appearance('Alien')
736    t.color_texture = 'alienColor'
737    t.color_mask_texture = 'alienColorMask'
738    t.default_color = (0.3, 0.5, 0.8)
739    t.default_highlight = (1, 0, 0)
740    t.icon_texture = 'alienIcon'
741    t.icon_mask_texture = 'alienIconColorMask'
742    t.head_model = 'alienHead'
743    t.torso_model = 'alienTorso'
744    t.pelvis_model = 'alienPelvis'
745    t.upper_arm_model = 'alienUpperArm'
746    t.forearm_model = 'alienForeArm'
747    t.hand_model = 'alienHand'
748    t.upper_leg_model = 'alienUpperLeg'
749    t.lower_leg_model = 'alienLowerLeg'
750    t.toes_model = 'alienToes'
751    alien_sounds = ['alien1', 'alien2', 'alien3', 'alien4']
752    alien_hit_sounds = ['alienHit1', 'alienHit2']
753    t.attack_sounds = alien_sounds
754    t.jump_sounds = alien_sounds
755    t.impact_sounds = alien_hit_sounds
756    t.death_sounds = ['alienDeath']
757    t.pickup_sounds = alien_sounds
758    t.fall_sounds = ['alienFall']
759    t.style = 'spaz'
760
761    # OldLady ###################################
762    t = Appearance('OldLady')
763    t.color_texture = 'oldLadyColor'
764    t.color_mask_texture = 'oldLadyColorMask'
765    t.default_color = (0.3, 0.5, 0.8)
766    t.default_highlight = (1, 0, 0)
767    t.icon_texture = 'oldLadyIcon'
768    t.icon_mask_texture = 'oldLadyIconColorMask'
769    t.head_model = 'oldLadyHead'
770    t.torso_model = 'oldLadyTorso'
771    t.pelvis_model = 'oldLadyPelvis'
772    t.upper_arm_model = 'oldLadyUpperArm'
773    t.forearm_model = 'oldLadyForeArm'
774    t.hand_model = 'oldLadyHand'
775    t.upper_leg_model = 'oldLadyUpperLeg'
776    t.lower_leg_model = 'oldLadyLowerLeg'
777    t.toes_model = 'oldLadyToes'
778    old_lady_sounds = ['oldLady1', 'oldLady2', 'oldLady3', 'oldLady4']
779    old_lady_hit_sounds = ['oldLadyHit1', 'oldLadyHit2']
780    t.attack_sounds = old_lady_sounds
781    t.jump_sounds = old_lady_sounds
782    t.impact_sounds = old_lady_hit_sounds
783    t.death_sounds = ['oldLadyDeath']
784    t.pickup_sounds = old_lady_sounds
785    t.fall_sounds = ['oldLadyFall']
786    t.style = 'spaz'
787
788    # Gladiator ###################################
789    t = Appearance('Gladiator')
790    t.color_texture = 'gladiatorColor'
791    t.color_mask_texture = 'gladiatorColorMask'
792    t.default_color = (0.3, 0.5, 0.8)
793    t.default_highlight = (1, 0, 0)
794    t.icon_texture = 'gladiatorIcon'
795    t.icon_mask_texture = 'gladiatorIconColorMask'
796    t.head_model = 'gladiatorHead'
797    t.torso_model = 'gladiatorTorso'
798    t.pelvis_model = 'gladiatorPelvis'
799    t.upper_arm_model = 'gladiatorUpperArm'
800    t.forearm_model = 'gladiatorForeArm'
801    t.hand_model = 'gladiatorHand'
802    t.upper_leg_model = 'gladiatorUpperLeg'
803    t.lower_leg_model = 'gladiatorLowerLeg'
804    t.toes_model = 'gladiatorToes'
805    gladiator_sounds = ['gladiator1', 'gladiator2', 'gladiator3', 'gladiator4']
806    gladiator_hit_sounds = ['gladiatorHit1', 'gladiatorHit2']
807    t.attack_sounds = gladiator_sounds
808    t.jump_sounds = gladiator_sounds
809    t.impact_sounds = gladiator_hit_sounds
810    t.death_sounds = ['gladiatorDeath']
811    t.pickup_sounds = gladiator_sounds
812    t.fall_sounds = ['gladiatorFall']
813    t.style = 'spaz'
814
815    # Wrestler ###################################
816    t = Appearance('Wrestler')
817    t.color_texture = 'wrestlerColor'
818    t.color_mask_texture = 'wrestlerColorMask'
819    t.default_color = (0.3, 0.5, 0.8)
820    t.default_highlight = (1, 0, 0)
821    t.icon_texture = 'wrestlerIcon'
822    t.icon_mask_texture = 'wrestlerIconColorMask'
823    t.head_model = 'wrestlerHead'
824    t.torso_model = 'wrestlerTorso'
825    t.pelvis_model = 'wrestlerPelvis'
826    t.upper_arm_model = 'wrestlerUpperArm'
827    t.forearm_model = 'wrestlerForeArm'
828    t.hand_model = 'wrestlerHand'
829    t.upper_leg_model = 'wrestlerUpperLeg'
830    t.lower_leg_model = 'wrestlerLowerLeg'
831    t.toes_model = 'wrestlerToes'
832    wrestler_sounds = ['wrestler1', 'wrestler2', 'wrestler3', 'wrestler4']
833    wrestler_hit_sounds = ['wrestlerHit1', 'wrestlerHit2']
834    t.attack_sounds = wrestler_sounds
835    t.jump_sounds = wrestler_sounds
836    t.impact_sounds = wrestler_hit_sounds
837    t.death_sounds = ['wrestlerDeath']
838    t.pickup_sounds = wrestler_sounds
839    t.fall_sounds = ['wrestlerFall']
840    t.style = 'spaz'
841
842    # OperaSinger ###################################
843    t = Appearance('Gretel')
844    t.color_texture = 'operaSingerColor'
845    t.color_mask_texture = 'operaSingerColorMask'
846    t.default_color = (0.3, 0.5, 0.8)
847    t.default_highlight = (1, 0, 0)
848    t.icon_texture = 'operaSingerIcon'
849    t.icon_mask_texture = 'operaSingerIconColorMask'
850    t.head_model = 'operaSingerHead'
851    t.torso_model = 'operaSingerTorso'
852    t.pelvis_model = 'operaSingerPelvis'
853    t.upper_arm_model = 'operaSingerUpperArm'
854    t.forearm_model = 'operaSingerForeArm'
855    t.hand_model = 'operaSingerHand'
856    t.upper_leg_model = 'operaSingerUpperLeg'
857    t.lower_leg_model = 'operaSingerLowerLeg'
858    t.toes_model = 'operaSingerToes'
859    opera_singer_sounds = [
860        'operaSinger1', 'operaSinger2', 'operaSinger3', 'operaSinger4'
861    ]
862    opera_singer_hit_sounds = ['operaSingerHit1', 'operaSingerHit2']
863    t.attack_sounds = opera_singer_sounds
864    t.jump_sounds = opera_singer_sounds
865    t.impact_sounds = opera_singer_hit_sounds
866    t.death_sounds = ['operaSingerDeath']
867    t.pickup_sounds = opera_singer_sounds
868    t.fall_sounds = ['operaSingerFall']
869    t.style = 'spaz'
870
871    # Pixie ###################################
872    t = Appearance('Pixel')
873    t.color_texture = 'pixieColor'
874    t.color_mask_texture = 'pixieColorMask'
875    t.default_color = (0, 1, 0.7)
876    t.default_highlight = (0.65, 0.35, 0.75)
877    t.icon_texture = 'pixieIcon'
878    t.icon_mask_texture = 'pixieIconColorMask'
879    t.head_model = 'pixieHead'
880    t.torso_model = 'pixieTorso'
881    t.pelvis_model = 'pixiePelvis'
882    t.upper_arm_model = 'pixieUpperArm'
883    t.forearm_model = 'pixieForeArm'
884    t.hand_model = 'pixieHand'
885    t.upper_leg_model = 'pixieUpperLeg'
886    t.lower_leg_model = 'pixieLowerLeg'
887    t.toes_model = 'pixieToes'
888    pixie_sounds = ['pixie1', 'pixie2', 'pixie3', 'pixie4']
889    pixie_hit_sounds = ['pixieHit1', 'pixieHit2']
890    t.attack_sounds = pixie_sounds
891    t.jump_sounds = pixie_sounds
892    t.impact_sounds = pixie_hit_sounds
893    t.death_sounds = ['pixieDeath']
894    t.pickup_sounds = pixie_sounds
895    t.fall_sounds = ['pixieFall']
896    t.style = 'pixie'
897
898    # Robot ###################################
899    t = Appearance('Robot')
900    t.color_texture = 'robotColor'
901    t.color_mask_texture = 'robotColorMask'
902    t.default_color = (0.3, 0.5, 0.8)
903    t.default_highlight = (1, 0, 0)
904    t.icon_texture = 'robotIcon'
905    t.icon_mask_texture = 'robotIconColorMask'
906    t.head_model = 'robotHead'
907    t.torso_model = 'robotTorso'
908    t.pelvis_model = 'robotPelvis'
909    t.upper_arm_model = 'robotUpperArm'
910    t.forearm_model = 'robotForeArm'
911    t.hand_model = 'robotHand'
912    t.upper_leg_model = 'robotUpperLeg'
913    t.lower_leg_model = 'robotLowerLeg'
914    t.toes_model = 'robotToes'
915    robot_sounds = ['robot1', 'robot2', 'robot3', 'robot4']
916    robot_hit_sounds = ['robotHit1', 'robotHit2']
917    t.attack_sounds = robot_sounds
918    t.jump_sounds = robot_sounds
919    t.impact_sounds = robot_hit_sounds
920    t.death_sounds = ['robotDeath']
921    t.pickup_sounds = robot_sounds
922    t.fall_sounds = ['robotFall']
923    t.style = 'spaz'
924
925    # Bunny ###################################
926    t = Appearance('Easter Bunny')
927    t.color_texture = 'bunnyColor'
928    t.color_mask_texture = 'bunnyColorMask'
929    t.default_color = (1, 1, 1)
930    t.default_highlight = (1, 0.5, 0.5)
931    t.icon_texture = 'bunnyIcon'
932    t.icon_mask_texture = 'bunnyIconColorMask'
933    t.head_model = 'bunnyHead'
934    t.torso_model = 'bunnyTorso'
935    t.pelvis_model = 'bunnyPelvis'
936    t.upper_arm_model = 'bunnyUpperArm'
937    t.forearm_model = 'bunnyForeArm'
938    t.hand_model = 'bunnyHand'
939    t.upper_leg_model = 'bunnyUpperLeg'
940    t.lower_leg_model = 'bunnyLowerLeg'
941    t.toes_model = 'bunnyToes'
942    bunny_sounds = ['bunny1', 'bunny2', 'bunny3', 'bunny4']
943    bunny_hit_sounds = ['bunnyHit1', 'bunnyHit2']
944    t.attack_sounds = bunny_sounds
945    t.jump_sounds = ['bunnyJump']
946    t.impact_sounds = bunny_hit_sounds
947    t.death_sounds = ['bunnyDeath']
948    t.pickup_sounds = bunny_sounds
949    t.fall_sounds = ['bunnyFall']
950    t.style = 'bunny'

Register our builtin spaz appearances.