263 lines
9.7 KiB
Python
263 lines
9.7 KiB
Python
from direct.showbase import PythonUtil
|
|
from pandac.PandaModules import VBase4, Vec3, Point3
|
|
from CogdoUtil import VariableContainer, DevVariableContainer
|
|
AI = VariableContainer()
|
|
AI.GameActions = PythonUtil.Enum(('LandOnWinPlatform', 'WinStateFinished', 'GotoWinState', 'HitWhirlwind', 'HitLegalEagle', 'HitMinion', 'DebuffInvul', 'RequestEnterEagleInterest', 'RequestExitEagleInterest', 'RanOutOfTimePenalty', 'Died', 'Spawn', 'SetBlades', 'BladeLost'))
|
|
AI.BroadcastPeriod = 0.3
|
|
AI.SafezoneId2DeathDamage = {2000: 1,
|
|
1000: 2,
|
|
5000: 4,
|
|
4000: 8,
|
|
3000: 12,
|
|
9000: 16,
|
|
7000: 20}
|
|
AI.SafezoneId2WhirlwindDamage = {2000: 1,
|
|
1000: 2,
|
|
5000: 4,
|
|
4000: 8,
|
|
3000: 12,
|
|
9000: 16,
|
|
7000: 20}
|
|
AI.SafezoneId2LegalEagleDamage = {2000: 2,
|
|
1000: 4,
|
|
5000: 8,
|
|
4000: 16,
|
|
3000: 24,
|
|
9000: 32,
|
|
7000: 36}
|
|
AI.SafezoneId2MinionDamage = {2000: 1,
|
|
1000: 2,
|
|
5000: 4,
|
|
4000: 8,
|
|
3000: 12,
|
|
9000: 16,
|
|
7000: 20}
|
|
Camera = VariableContainer()
|
|
Camera.Angle = 12.5
|
|
Camera.Distance = 20
|
|
Camera.LookAtToonHeightOffset = 1.0
|
|
Camera.LeewayX = 0.5
|
|
Camera.MinLeewayZ = 0.5
|
|
Camera.MaxLeewayZ = 15.0
|
|
Camera.CatchUpRateZ = 3.0
|
|
Camera.LevelBoundsFactor = (0.6, 1.0, 0.9)
|
|
Camera.AlphaBetweenToon = 0.35
|
|
Camera.SpinRadius = 9.0
|
|
Camera.MaxSpinAngle = 20.0
|
|
Camera.MaxSpinX = 16.0
|
|
Camera.GameCameraFar = 400.0
|
|
Gameplay = VariableContainer()
|
|
Gameplay.SecondsUntilGameOver = 60.0 * 3.0
|
|
Gameplay.TimeRunningOutSeconds = 45.0
|
|
Gameplay.IntroDurationSeconds = 24.0
|
|
Gameplay.FinishDurationSeconds = 10.0
|
|
Gameplay.GatherableFlashTime = 1.0
|
|
Gameplay.ToonAcceleration = {'forward': 60.0,
|
|
'backward': 60.0,
|
|
'turning': 60.0,
|
|
'boostUp': 20.0,
|
|
'fall': 15.0,
|
|
'activeDropDown': 20.0,
|
|
'activeDropBack': 40.0,
|
|
'fan': 80.0}
|
|
Gameplay.ToonDeceleration = {'forward': 10.0,
|
|
'backward': 10.0,
|
|
'turning': 10.0,
|
|
'fan': 25.0}
|
|
Gameplay.ToonVelMax = {'forward': 20.0,
|
|
'backward': 12.0,
|
|
'turning': 15.0,
|
|
'boost': 5.5,
|
|
'fall': 10.0,
|
|
'fallNoFuel': 70.0,
|
|
'fan': 55.0}
|
|
Gameplay.ToonTurning = {'turningSpeed': 15.0,
|
|
'maxTurningAngle': 45.0}
|
|
Gameplay.RayPlatformCollisionThreshold = 0.2
|
|
Gameplay.UseVariableFanPower = True
|
|
Gameplay.FanMaxPower = 1.0
|
|
Gameplay.FanMinPower = 0.4
|
|
Gameplay.FanCollisionTubeRadius = 4.0
|
|
Gameplay.FanCollisionTubeHeight = 35.0
|
|
Gameplay.FanStreamerMinDuration = 0.2
|
|
Gameplay.FanStreamerMaxDuration = 0.5
|
|
Gameplay.WhirlwindCollisionTubeHeight = 100
|
|
Gameplay.WhirlwindCollisionTubeRadius = 4.0
|
|
Gameplay.WhirlwindMoveBackDist = 15.0
|
|
Gameplay.WhirlwindSpinTime = 1.0
|
|
Gameplay.WhirlwindMoveBackTime = 0.5
|
|
Gameplay.FlyingMinionCollisionRadius = 2.5
|
|
Gameplay.FlyingMinionCollisionHeightOffset = 5.0
|
|
Gameplay.FlyingMinionFloatOffset = 1.0
|
|
Gameplay.FlyingMinionFloatTime = 1.0
|
|
Gameplay.WalkingMinionCollisionRadius = 2.5
|
|
Gameplay.WalkingMinionCollisionHeightOffset = 2.0
|
|
Gameplay.MemoCollisionRadius = 1.5
|
|
Gameplay.MemoSpinRate = 60.0
|
|
Gameplay.DoesToonDieWithFuel = True
|
|
Gameplay.SafezoneId2LaffPickupHealAmount = {2000: 1,
|
|
1000: 2,
|
|
5000: 4,
|
|
4000: 8,
|
|
3000: 12,
|
|
9000: 16,
|
|
7000: 20}
|
|
Gameplay.InvulBuffTime = 15.0
|
|
Gameplay.InvulBlinkTime = 5.0
|
|
Gameplay.InvulSingleBlinkTime = 0.5
|
|
Gameplay.PropellerCollisionRadius = 3.0
|
|
Gameplay.PropellerRespawnTime = 5.0
|
|
Gameplay.FuelBurnRate = 0.1
|
|
Gameplay.DepleteFuelStates = ['FlyingUp']
|
|
Gameplay.FuelNormalAmt = 1.0
|
|
Gameplay.FuelLowAmt = 0.66
|
|
Gameplay.FuelVeryLowAmt = 0.33
|
|
Gameplay.FuelStates = PythonUtil.Enum(('FuelNoPropeller', 'FuelEmpty', 'FuelVeryLow', 'FuelLow', 'FuelNormal'))
|
|
Gameplay.RefuelPropSpeed = 5.0
|
|
Gameplay.OverdrivePropSpeed = 2.5
|
|
Gameplay.NormalPropSpeed = 1.5
|
|
Gameplay.TargetedWarningLabelScale = 3.5
|
|
Gameplay.TargetedWarningSingleBlinkTime = 0.25
|
|
Gameplay.TargetedWarningBlinkTime = 3.0
|
|
Gameplay.HitKnockbackDist = 15.0
|
|
Gameplay.HitKnockbackTime = 0.5
|
|
Gameplay.HitCooldownTime = 2.0
|
|
Gameplay.BackpackStates = PythonUtil.Enum(('Normal', 'Targeted', 'Attacked', 'Refuel'))
|
|
Gameplay.BackpackRefuelDuration = 4.0
|
|
Gameplay.BackpackState2TextureName = {Gameplay.BackpackStates.Normal: 'tt_t_ara_cfg_propellerPack',
|
|
Gameplay.BackpackStates.Targeted: 'tt_t_ara_cfg_propellerPack_eagleTarget',
|
|
Gameplay.BackpackStates.Attacked: 'tt_t_ara_cfg_propellerPack_eagleAttack',
|
|
Gameplay.BackpackStates.Refuel: 'tt_t_ara_cfg_propellerPack_flash'}
|
|
Gameplay.MinionDnaName = 'bf'
|
|
Gameplay.MinionScale = 0.8
|
|
Gui = VariableContainer()
|
|
Gui.FuelNumBladesPos2D = (-0.005, -0.017)
|
|
Gui.FuelNumBladesScale = 0.07
|
|
Gui.FuelPos2D = (0.143, 0.760)
|
|
Gui.NumBlades2FuelColor = {0: (0.9, 0.15, 0.15, 1.0),
|
|
1: (0.9, 0.15, 0.15, 1.0),
|
|
2: (0.9, 0.9, 0.15, 1.0),
|
|
3: (0.25, 0.65, 0.25, 1.0)}
|
|
Gui.FuelNormalColor = (0.25, 0.65, 0.25, 1.0)
|
|
Gui.FuelLowColor = (0.9, 0.9, 0.15, 1.0)
|
|
Gui.FuelVeryLowColor = (0.9, 0.15, 0.15, 1.0)
|
|
Gui.ProgressPos2D = (-0.183, 0.85)
|
|
Gui.ProgressHPos2D = (0, 0.82)
|
|
Gui.MarkerScale = 0.03
|
|
Gui.LocalMarkerScale = 0.0425
|
|
LegalEagle = VariableContainer()
|
|
LegalEagle.EagleAndTargetDistCameraTrackThreshold = 30.0
|
|
LegalEagle.InterestConeLength = 80
|
|
LegalEagle.InterestConeOffset = 5.0
|
|
LegalEagle.InterestConeAngle = 60
|
|
LegalEagle.DamageSphereRadius = 3.0
|
|
LegalEagle.OnNestDamageSphereRadius = 6.0
|
|
LegalEagle.VerticalOffset = -6.0
|
|
LegalEagle.PlatformVerticalOffset = 0.0
|
|
LegalEagle.LiftOffTime = 0.5
|
|
LegalEagle.LiftOffHeight = 5.0
|
|
LegalEagle.LockOnSpeed = 3.0
|
|
LegalEagle.LockOnTime = 2.0
|
|
LegalEagle.ExtraPostCooldownTime = 2.0
|
|
LegalEagle.LockOnDistanceFromNest = -7.0
|
|
LegalEagle.ChargeUpTime = 0.75
|
|
LegalEagle.RetreatToNestTime = 2.0
|
|
LegalEagle.PreAttackTime = 0.75
|
|
LegalEagle.PostAttackTime = 0.5
|
|
LegalEagle.RetreatToSkyTime = 1.25
|
|
LegalEagle.EagleAttackShouldXCorrect = True
|
|
LegalEagle.AttackRateOfChangeVec = Vec3(1.0, 1.0, 2.0)
|
|
LegalEagle.PostAttackLength = 5.0
|
|
LegalEagle.CooldownTime = 5.0
|
|
LegalEagle.PostCooldownHeightOffNest = 40.0
|
|
Dev = DevVariableContainer('cogdoflying')
|
|
Dev.DisableDeath = False
|
|
Dev.InfiniteFuel = False
|
|
Dev.InfiniteTimeLimit = False
|
|
Dev.Invincibility = False
|
|
Dev.NoLegalEagleAttacks = False
|
|
Audio = VariableContainer()
|
|
Audio.Cutoff = 75.0
|
|
Audio.MusicFiles = {'normal': 'phase_9/audio/bgm/CHQ_FACT_bg.ogg',
|
|
'end': 'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg',
|
|
'waiting': 'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg',
|
|
'invul': 'phase_9/audio/bgm/encntr_toon_winning.ogg',
|
|
'timeRunningOut': 'phase_7/audio/bgm/encntr_suit_winning_indoor.ogg'}
|
|
Audio.SfxFiles = {'propeller': 'phase_4/audio/sfx/TB_propeller.ogg',
|
|
'propeller_damaged': 'phase_5/audio/sfx/tt_s_ara_cfg_propellers_damaged.ogg',
|
|
'fan': 'phase_4/audio/sfx/target_wind_float_loop.ogg',
|
|
'getMemo': 'phase_4/audio/sfx/MG_maze_pickup.ogg',
|
|
'getLaff': 'phase_4/audio/sfx/avatar_emotion_laugh.ogg',
|
|
'getRedTape': 'phase_5/audio/sfx/SA_red_tape.ogg',
|
|
'invulBuff': 'phase_4/audio/sfx/ring_get.ogg',
|
|
'invulDebuff': 'phase_4/audio/sfx/ring_miss.ogg',
|
|
'refuel': 'phase_5/audio/sfx/LB_receive_evidence.ogg',
|
|
'bladeBreak': 'phase_5/audio/sfx/tt_s_ara_cfg_propellerBreaks.ogg',
|
|
'popupHelpText': 'phase_3/audio/sfx/GUI_balloon_popup.ogg',
|
|
'collide': 'phase_3.5/audio/sfx/AV_collision.ogg',
|
|
'whirlwind': 'phase_5/audio/sfx/tt_s_ara_cfg_whirlwind.ogg',
|
|
'toonInWhirlwind': 'phase_5/audio/sfx/tt_s_ara_cfg_toonInWhirlwind.ogg',
|
|
'death': 'phase_5/audio/sfx/tt_s_ara_cfg_toonFalls.ogg',
|
|
'legalEagleScream': 'phase_5/audio/sfx/tt_s_ara_cfg_eagleCry.ogg',
|
|
'toonHit': 'phase_5/audio/sfx/tt_s_ara_cfg_toonHit.ogg',
|
|
'lose': 'phase_4/audio/sfx/MG_lose.ogg',
|
|
'win': 'phase_4/audio/sfx/MG_win.ogg',
|
|
'refuelSpin': 'phase_4/audio/sfx/clock12.ogg',
|
|
'cogDialogue': 'phase_3.5/audio/dial/COG_VO_statement.ogg',
|
|
'toonDialogue': 'phase_3.5/audio/dial/AV_dog_long.ogg'}
|
|
Level = VariableContainer()
|
|
Level.GatherableTypes = PythonUtil.Enum(('Memo', 'Propeller', 'LaffPowerup', 'InvulPowerup'))
|
|
Level.ObstacleTypes = PythonUtil.Enum(('Whirlwind', 'Fan', 'Minion'))
|
|
Level.PlatformTypes = PythonUtil.Enum(('Platform', 'StartPlatform', 'EndPlatform'))
|
|
Level.PlatformType2SpawnOffset = {Level.PlatformTypes.Platform: 2.5,
|
|
Level.PlatformTypes.StartPlatform: 5.0,
|
|
Level.PlatformTypes.EndPlatform: 5.0}
|
|
Level.QuadLengthUnits = 170
|
|
Level.QuadVisibilityAhead = 1
|
|
Level.QuadVisibilityBehind = 0
|
|
Level.StartPlatformLength = 55
|
|
Level.StartPlatformHeight = 20
|
|
Level.EndPlatformLength = 55
|
|
Level.EndPlatformHeight = 0
|
|
Level.FogColor = VBase4(0.18, 0.19, 0.32, 1.0)
|
|
Level.RenderFogStartFactor = 0.22
|
|
Level.GatherablesDefaultSpread = 1.0
|
|
Level.NumMemosInRing = 6
|
|
Level.PropellerSpinDuration = 10.0
|
|
Level.QuadsByDifficulty = {1: (2, 4, 5),
|
|
2: (1, 3, 7),
|
|
3: (6, 8)}
|
|
Level.DifficultyOrder = {2000: (1, 1, 1, 2, 1),
|
|
1000: (1, 1, 2, 2, 1),
|
|
5000: (1, 2, 1, 2, 2),
|
|
4000: (1, 2, 1, 2, 3, 2),
|
|
3000: (1, 2, 2, 3, 2, 3),
|
|
9000: (2, 3, 2, 3, 2, 3, 2),
|
|
7000: (2, 3, 2, 3, 2, 3, 2)}
|
|
Dev.WantTempLevel = True
|
|
Dev.DevQuadsOrder = (1, 2, 3, 4, 5, 6, 7, 8)
|
|
Level.AddSparkleToPowerups = False
|
|
Level.AddParticlesToStreamers = False
|
|
Level.IgnoreLaffPowerups = False
|
|
Level.SpawnLaffPowerupsInNests = True
|
|
Level.LaffPowerupNestOffset = Point3(0.0, 2.0, 3.0)
|
|
Level.PlatformName = '*lightFixture'
|
|
Level.GatherablesPathName = 'gatherables_path*'
|
|
Level.GatherablesRingName = 'gatherables_ring_path*'
|
|
Level.PropellerName = '*propeller_loc*'
|
|
Level.PowerupType2Loc = {Level.GatherableTypes.LaffPowerup: 'laff_powerup_loc*',
|
|
Level.GatherableTypes.InvulPowerup: 'invul_powerup_loc*'}
|
|
Level.PowerupType2Model = {Level.GatherableTypes.LaffPowerup: 'legalEagleFeather',
|
|
Level.GatherableTypes.InvulPowerup: 'redTapePickup'}
|
|
Level.PowerupType2Node = {Level.GatherableTypes.LaffPowerup: 'feather',
|
|
Level.GatherableTypes.InvulPowerup: 'redTape'}
|
|
Level.GatherableType2TextureName = {Level.GatherableTypes.LaffPowerup: 'tt_t_ara_cfg_legalEagleFeather_flash',
|
|
Level.GatherableTypes.InvulPowerup: 'tt_t_ara_cfg_redTapePickup_flash',
|
|
Level.GatherableTypes.Memo: 'tt_t_ara_csa_memo_flash',
|
|
Level.GatherableTypes.Propeller: 'tt_t_ara_cfg_propellers_flash'}
|
|
Level.WhirlwindName = '*whirlwindPlaceholder'
|
|
Level.WhirlwindPathName = '_path*'
|
|
Level.StreamerName = '*streamerPlaceholder'
|
|
Level.MinionWalkingPathName = '*minion_walking_path*'
|
|
Level.MinionFlyingPathName = '*minion_flying_path*'
|
|
Level.LegalEagleNestName = '*eagleNest_loc*'
|