209 lines
6.5 KiB
Python
209 lines
6.5 KiB
Python
import random
|
|
|
|
FirstSuitSpawnPoint = (65.0, -5.0, 4.0, 180.0)
|
|
FinaleSuitSpawnPoint = (-138.0, 4.0, 0.5, -90.0)
|
|
|
|
# The position of the Finale suit
|
|
# Spawns at SuitSpawnPoints # 3
|
|
FinaleSuitDestinations = [
|
|
(-96.2, -52.3),
|
|
(-36.5, -56.0),
|
|
( 7.1, -1.4),
|
|
( 27.3, -0.4),
|
|
( 36.5, -1.9),
|
|
]
|
|
|
|
# Lets give the Finale suit a special name
|
|
# This one is surprisingly fitting, because of the election -- http://en.wikipedia.org/wiki/Ambush_marketing
|
|
FinaleSuitName = 'Director of\nAmbush Marketing\nSupervisor\nLevel 50'
|
|
|
|
# Add a few phrases for the cog to say
|
|
FinaleSuitPhrases = [
|
|
# The Director has landed
|
|
"Apparently our marketing strategies haven't exactly appealed to you \"Toons\".",
|
|
"I suppose you could say that \"I'm the boss.\"",
|
|
# Time to find Flippy, we'll do some brainstorming along the way
|
|
"I'll be needing to speak with your President directly."
|
|
"I'm prepared to close this deal quickly.",
|
|
"Relax, you'll find this is for the best.",
|
|
"At this rate I'll need to liquidate toons from the picture.",
|
|
"I assure you that you'll find no greater offer.",
|
|
"The Chairman won't be happy until you are.",
|
|
# We arrive at Flippy
|
|
"Ah, finally. Just the toon I've been searching for.",
|
|
"I hope you won't pull out of the deal like your predecessor.",
|
|
"Don't worry, he is in safe keeping now."
|
|
]
|
|
|
|
FinaleSuitAttackDamage = 10
|
|
FinaleSuitAttackDelay = 10 # Wait 10 seconds before jumping again
|
|
|
|
# Spawn points for the Invasion Minigame
|
|
# There are currently 18 spawnpoints
|
|
SuitSpawnPoints = [
|
|
# X Y Z H
|
|
( -59.0, 70.0, 0.0,-149.0),
|
|
(-122.0, -54.0, 0.5, -40.0),
|
|
( -23.7, -83.1, 0.5, 0.0),
|
|
(-116.1, 7.8, 0.0, -90.0),
|
|
( 14.0, 83.5, 2.5, 140.0),
|
|
( 17.8, -72.4, 2.5, 45.0),
|
|
( 10.0, -81.5, 2.5, 45.0),
|
|
( -55.1, -35.0, -3.7, -60.0),
|
|
( -66.7, 87.8, 0.5,-150.0),
|
|
( -91.7, 88.8, -0.7,-140.0),
|
|
( 29.7, 139.8, 2.5, -70.0),
|
|
( 90.0, 106.0, 2.5,-100.0),
|
|
(-127.5, 56.3, 0.5, 30.0),
|
|
(-104.6, 51.0, 0.02, -30.0),
|
|
(-111.3, -67.0, 0.5, 40.0),
|
|
( 135.0, -98.0, 2.5,-130.0),
|
|
( 121.6, -52.8, 2.5, 80.0),
|
|
( 46.1,-114.8, 2.5, 60.0),
|
|
(-113.6, 20.0, 0.03, 55.0),
|
|
]
|
|
|
|
suitLevels = [
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4
|
|
]
|
|
sellbotSuits = [
|
|
'cc',
|
|
'tm',
|
|
'nd',
|
|
'gh',
|
|
'ms',
|
|
'tf',
|
|
'm',
|
|
'mh'
|
|
]
|
|
cashbotSuits = [
|
|
'sc',
|
|
'pp',
|
|
'tw',
|
|
'bc',
|
|
'nc',
|
|
'mb',
|
|
'ls',
|
|
'rb'
|
|
]
|
|
lawbotSuitTypes = [
|
|
'bf',
|
|
'b',
|
|
'dt',
|
|
'ac',
|
|
'bs',
|
|
'sd',
|
|
'le',
|
|
'bw'
|
|
]
|
|
bossbotSuits = [
|
|
'f',
|
|
'p',
|
|
'ym',
|
|
'mm',
|
|
'ds',
|
|
'hh',
|
|
'cr',
|
|
'tbc'
|
|
]
|
|
|
|
|
|
def generateSuits(numberOfSuits, suitLevelRange=[0, 0], suitRange=[0, 0], wantExtraShakers=False):
|
|
suits = [sellbotSuits, cashbotSuits, lawbotSuitTypes, bossbotSuits] # Suit arrays
|
|
wave = []
|
|
if wantExtraShakers:
|
|
wave = [(random.choice(suits)[random.randint(suitRange[0], suitRange[1])],
|
|
random.randint(suitLevelRange[0], suitLevelRange[1]))
|
|
for k in range(numberOfSuits)]
|
|
wave.append(('ms', 4))
|
|
wave.append(('ms', 4))
|
|
else:
|
|
wave = [(random.choice(suits)[random.randint(suitRange[0], suitRange[1])],
|
|
random.randint(suitLevelRange[0], suitLevelRange[1]))
|
|
for k in range(numberOfSuits)]
|
|
return wave
|
|
|
|
SuitWaves = [
|
|
# Suits in a wave can't exceed the number of spawn points.
|
|
# While each index is actually separate wave, they will keep
|
|
# spawning until the intermission wave, which is defined below.
|
|
|
|
# WAVE 1:
|
|
generateSuits(10, [0, 4], [0, 0]),
|
|
generateSuits(13, [2, 3], [0, 0]), # Wait Wave
|
|
generateSuits(17, [2, 4], [0, 0]), # Intermission Wave
|
|
|
|
# WAVE 2:
|
|
generateSuits(11, [2, 3], [0, 1]),
|
|
generateSuits(14, [2, 2], [0, 1]), # Wait Wave
|
|
generateSuits(17, [2, 3], [0, 1]), # Intermission Wave
|
|
|
|
# WAVE 3:
|
|
generateSuits(8, [2, 3], [1, 2]),
|
|
generateSuits(11, [2, 2], [2, 2]), # Wait Wave
|
|
generateSuits(17, [2, 3], [2, 2]), # Intermission Wave
|
|
|
|
# WAVE 4:
|
|
generateSuits(8, [2, 3], [2, 3]),
|
|
generateSuits(11, [2, 2], [3, 3]), # Wait Wave
|
|
generateSuits(17, [2, 3], [3, 3]), # Intermission Wave
|
|
|
|
# WAVE 5:
|
|
generateSuits(8, [0, 2], [3, 4]),
|
|
generateSuits(11, [2, 4], [4, 4]), # Wait Wave
|
|
generateSuits(17, [2, 3], [4, 4]), # Intermission Wave
|
|
|
|
# WAVE 6:
|
|
generateSuits(8, [1, 2], [4, 5]),
|
|
generateSuits(11, [1, 4], [5, 5], True), # Wait Wave
|
|
generateSuits(16, [2, 3], [5, 5], True), # Intermission Wave
|
|
|
|
# WAVE 7:
|
|
generateSuits(8, [0, 2], [5, 6], True),
|
|
generateSuits(11, [1, 2], [6, 6], True), # Wait Wave
|
|
generateSuits(16, [2, 3], [6, 6], True), # Intermission Wave
|
|
|
|
# WAVE 8:
|
|
generateSuits(10, [1, 3], [6, 7], True),
|
|
generateSuits(15, [1, 4], [7, 7], True), # Wait Wave
|
|
generateSuits(16, [2, 4], [7, 7], True), # Intermission Wave
|
|
|
|
# WAVE 9: THE FINAL WAVE
|
|
generateSuits(15, [1, 3], [6, 7], True),
|
|
generateSuits(20, [1, 4], [7, 7], True), # Wait Wave
|
|
generateSuits(25, [2, 4], [7, 7], True), # Intermission Wave
|
|
]
|
|
|
|
# On these waves, no more waves will spawn until all suits are destroyed.
|
|
# Once the suits are destroyed, the next wave will spawn again instantly with no intermission.
|
|
SuitWaitWaves = [1, 4, 7, 10, 13, 16, 19, 22, 24, 25]
|
|
|
|
# These waves have a 20 second intermission period after all suits are destroyed.
|
|
SuitIntermissionWaves = [2, 5, 8, 11, 14, 17, 20, 23, 26]
|
|
|
|
# These are the last waves that start turning cogs into Skelcogs.
|
|
SuitSkelecogWaves = [24, 25, 26]
|
|
|
|
WaveBeginningTime = 10 # This should be at least 6.5 (the suit fly-down time)
|
|
IntermissionTime = 20 # How long does the intermission last?
|
|
|
|
StandardSuitDamage = 5 # How much damage does a standard suit's attack do?
|
|
MoveShakerDamageRadius = 3 # How much damage does a Move and Shaker's attack do?
|
|
MoveShakerRadius = 15 # And it's attack radius?
|
|
MoveShakerStunTime = 5 # Once hit by a Mover and Shaker, how long do toons have before hit again?
|
|
|
|
ToonHealAmount = 3 # How much healing does a pie on a Toon do?
|
|
|
|
# Let's define some needed files
|
|
CogSkyFile = 'phase_3.5/models/props/BR_sky'
|
|
InvasionMusicEnter = 'phase_4/audio/bgm/DD_main_temp.ogg' # TODO: Break into separate parts for a better loop
|
|
|
|
# This message is displayed upon trying to leave Toontown Central
|
|
LeaveToontownCentralAlert = "There isn't anywhere to go! Shops are closed for the election today."
|
|
|
|
# A message for Anth's credit sequence. Might end up unused.
|
|
Thanks = "Thank you so much for attending the elections! We'd like to thank you all for supporting us! See you all soon!"
|