diff --git a/config/general.prc b/config/general.prc index 80ed5e6d..9bfa0d5e 100644 --- a/config/general.prc +++ b/config/general.prc @@ -3,9 +3,9 @@ # Window settings win-origin -2 -2 -show-frame-rate-meter #t frame-rate-meter-text-pattern %0.f FPS frame-rate-meter-update-interval 0.001 +screenshot-extension png # Notify settings notify-level-gobj error diff --git a/resources/phase_10/maps/CBMagnetBlue.png b/resources/phase_10/maps/CBMagnetBlue.png new file mode 100644 index 00000000..235f8e73 Binary files /dev/null and b/resources/phase_10/maps/CBMagnetBlue.png differ diff --git a/resources/phase_10/maps/CBMagnetRed.png b/resources/phase_10/maps/CBMagnetRed.png new file mode 100644 index 00000000..636232cd Binary files /dev/null and b/resources/phase_10/maps/CBMagnetRed.png differ diff --git a/resources/phase_10/models/cogHQ/CBMagnetBlue.bam b/resources/phase_10/models/cogHQ/CBMagnetBlue.bam new file mode 100644 index 00000000..b495b631 Binary files /dev/null and b/resources/phase_10/models/cogHQ/CBMagnetBlue.bam differ diff --git a/resources/phase_10/models/cogHQ/CBMagnetRed.bam b/resources/phase_10/models/cogHQ/CBMagnetRed.bam new file mode 100644 index 00000000..843d5503 Binary files /dev/null and b/resources/phase_10/models/cogHQ/CBMagnetRed.bam differ diff --git a/resources/phase_5/maps/battle_props_palette_3cmla_7.jpg b/resources/phase_5/maps/battle_props_palette_3cmla_7.jpg new file mode 100644 index 00000000..3b93da18 Binary files /dev/null and b/resources/phase_5/maps/battle_props_palette_3cmla_7.jpg differ diff --git a/resources/phase_5/models/props/lawbook.bam b/resources/phase_5/models/props/lawbook.bam index 421c474f..8c862ec8 100644 Binary files a/resources/phase_5/models/props/lawbook.bam and b/resources/phase_5/models/props/lawbook.bam differ diff --git a/toontown/coghq/BossHealthBar.py b/toontown/coghq/BossHealthBar.py index c0147267..ea6ce626 100644 --- a/toontown/coghq/BossHealthBar.py +++ b/toontown/coghq/BossHealthBar.py @@ -25,7 +25,7 @@ class BossHealthBar: def __init__(self, dept): self.dept = dept self.bossBarFrameBg = loader.loadTexture('phase_9/maps/HealthBarBosses.png') - self.bossBarFrame = DirectFrame(pos=(1, 0, self.bossBarEndPosZ), scale=1.8*0.8) + self.bossBarFrame = DirectFrame(parent=base.a2dTopRight, pos=(-.7, 0, -.1), scale=1.8*0.8) self.gui = loader.loadModel('phase_9/models/gui/HealthBarBosses') self.gui.setScale(1, 1, .75) self.gui.setColorScale(.4, .4, .4, 1) @@ -70,7 +70,6 @@ def initialize(self, hp, maxhp): self.damageBar.show() self.bossBar.show() self.gui.show() - Sequence(self.bossBarFrame.posInterval(1.0, Point3(1, 0, self.bossBarEndPosZ), blendType='easeOut')).start() def update(self, hp, maxHp): diff --git a/toontown/coghq/SellbotCogHQLoader.py b/toontown/coghq/SellbotCogHQLoader.py index aacf3b29..b8cd8eac 100644 --- a/toontown/coghq/SellbotCogHQLoader.py +++ b/toontown/coghq/SellbotCogHQLoader.py @@ -3,12 +3,10 @@ import CogHQLoader from toontown.toonbase import ToontownGlobals from direct.gui import DirectGui -from direct.task.Task import Task from toontown.toonbase import TTLocalizer from toontown.toon import Toon from direct.fsm import State import FactoryExterior -import random import FactoryInterior import SellbotHQExterior import SellbotHQBossBattle @@ -45,7 +43,6 @@ def unloadPlaceGeom(self): if self.geom: self.geom.removeNode() self.geom = None - taskMgr.remove('hide-show-train-light-task') CogHQLoader.CogHQLoader.unloadPlaceGeom(self) return @@ -89,78 +86,6 @@ def loadPlaceGeom(self, zoneId): doorFrame.node().setEffect(DecalEffect.make()) index += 1 - self.vpBodyModel = loader.loadModel('phase_9/models/char/sellbotBoss-torso-zero') - self.vpBodyModel.reparentTo(self.geom) - self.vpBodyModel.setPos(30.8499, -160.209, -17.5944) - self.vpBodyModel.setHpr(30, 20, 325) - - self.vpHeadModel = loader.loadModel('phase_9/models/char/sellbotBoss-head-zero') - self.vpHeadModel.reparentTo(self.vpBodyModel) - self.vpHeadModel.setPos(0, 0, 8) - self.vpHeadModel.setHpr(90, 0, 270) - - self.vpTreadsModel = loader.loadModel('phase_9/models/char/bossCog-treads') - self.vpTreadsModel.reparentTo(self.geom) - self.vpTreadsModel.setPos(-20, -165.209, -13.8944) - self.vpTreadsModel.setHpr(70, 20, 130) - - self.vpLegsModel = loader.loadModel('phase_9/models/char/bossCog-legs-zero') - self.vpLegsModel.reparentTo(self.vpTreadsModel) - - self.gearModel1 = loader.loadModel('phase_9/models/cogHQ/FactoryGearB') - self.gearModel1.reparentTo(self.geom) - self.gearModel1.setScale(10) - self.gearModel1.setPos(45, -183, -13) - self.gearModel1.setHpr(290, 35, 0) - - self.gearModel2 = loader.loadModel('phase_9/models/cogHQ/FactoryGearB') - self.gearModel2.reparentTo(self.geom) - self.gearModel2.setScale(5) - self.gearModel2.setPos(45, -195, -15.5) - self.gearModel2.setHpr(316, 35, 0) - - self.trainModel = loader.loadModel('phase_10/models/cogHQ/CashBotLocomotive') - self.trainModel.reparentTo(self.geom) - self.trainModel.setPos(-35, -205, -20) - self.trainModel.setScale(0.4) - self.trainModel.setHpr(80, 330, 0) - - self.trainLight = self.trainModel.find('**/LMBigLtBeam') - self.trainLightPiece = self.trainModel.find('**/LMBigLight') - self.applyNewTrainLightTask() - - self.trainCarModel = loader.loadModel('phase_10/models/cogHQ/CashBotBoxCar') - self.trainCarModel.reparentTo(self.geom) - self.trainCarModel.setPos(-10, -229, -13) - self.trainCarModel.setScale(0.4) - self.trainCarModel.setHpr(0, 20, 0) - - self.trainTankModel = loader.loadModel('phase_10/models/cogHQ/CashBotTankCar') - self.trainTankModel.reparentTo(self.geom) - self.trainTankModel.setPos(80.874, -130.546, 4) - self.trainTankModel.setScale(0.4) - self.trainTankModel.setHpr(70, 70, 20) - - self.cashMoneyModel = loader.loadModel('phase_10/models/cogHQ/DoubleMoneyStack') - self.cashMoneyModel.reparentTo(self.geom) - self.cashMoneyModel.setPos(21, -206, -19.594) - self.cashMoneyModel.setHpr(67, 0, 0) - - self.cashMoneyLegalFeesModel = loader.loadModel('phase_11/models/lawbotHQ/LB_paper_big_stacks2') - self.cashMoneyLegalFeesModel.reparentTo(self.geom) - self.cashMoneyLegalFeesModel.setPos(-10, -207, -19.594) - self.cashMoneyLegalFeesModel.setHpr(243, 0, 0) - - self.golfKartModel = loader.loadModel('phase_12/models/bossbotHQ/Coggolf_cart3') - self.golfKartModel.reparentTo(self.geom) - self.golfKartModel.setPos(7, -196, -19.594) - self.golfKartModel.setHpr(149, 0, 0) - - self.banquetTableModel = loader.loadModel('phase_12/models/bossbotHQ/BanquetTableChairs') - self.banquetTableModel.reparentTo(self.geom) - self.banquetTableModel.setPos(0, -176, -19.594) - self.banquetTableModel.setHpr(97, 0, 0) - elif zoneId == ToontownGlobals.SellbotFactoryExt: self.geom = loader.loadModel(self.factoryExteriorModelPath) factoryLinkTunnel = self.geom.find('**/tunnel_group2') @@ -212,22 +137,6 @@ def loadPlaceGeom(self, zoneId): self.notify.warning('loadPlaceGeom: unclassified zone %s' % zoneId) CogHQLoader.CogHQLoader.loadPlaceGeom(self, zoneId) - def hideTrainLightTask(self, task): - self.trainLight.reparentTo(hidden) - self.trainLightPiece.setColorScale(0.25, 0.25, 0.25, 1) - return Task.done - - def applyNewTrainLightTask(self): - hideShowTrainLight = Task.loop(Task.pause(random.uniform(0.05, 1.5)), Task(self.hideTrainLightTask), Task.pause(0.1), Task(self.showTrainLightTask)) - taskMgr.add(hideShowTrainLight, 'hide-show-train-light-task') - - def showTrainLightTask(self, task): - self.trainLight.reparentTo(self.trainModel) - self.trainLightPiece.setColorScale(1, 1, 1, 1) - taskMgr.remove('hide-show-train-light-task') - self.applyNewTrainLightTask() - return Task.done - def unload(self): CogHQLoader.CogHQLoader.unload(self) Toon.unloadSellbotHQAnims() diff --git a/toontown/launcher/TTOffLauncher.py b/toontown/launcher/TTOffLauncher.py index 4e3a956c..a0622925 100644 --- a/toontown/launcher/TTOffLauncher.py +++ b/toontown/launcher/TTOffLauncher.py @@ -84,7 +84,7 @@ def getGameServer(self): return self.gameServer def getLogFileName(self): - return 'ttoff' + return 'craneleague' def parseWebAcctParams(self): self.secretNeedsParentPasswordKey = 0 diff --git a/toontown/launcher/TTOffQuickLauncher.py b/toontown/launcher/TTOffQuickLauncher.py index 09e66c2d..3e960b41 100644 --- a/toontown/launcher/TTOffQuickLauncher.py +++ b/toontown/launcher/TTOffQuickLauncher.py @@ -35,7 +35,7 @@ def getGameServer(self): return self.getValue('TTOFF_GAME_SERVER', '') def getLogFileName(self): - return 'ttoff' + return 'craneleague' def parseWebAcctParams(self): # these aren't ever used, as self.useTTOffSpecificLogin should diff --git a/toontown/spellbook/MagicWordIndex.py b/toontown/spellbook/MagicWordIndex.py index 92202e37..27a36f87 100644 --- a/toontown/spellbook/MagicWordIndex.py +++ b/toontown/spellbook/MagicWordIndex.py @@ -1766,6 +1766,11 @@ def handleWord(self, invoker, avId, toon, *args): boss.magicWordHit(dmg, invoker.doId) + # this should have been its own command but i'm too lazy for that + if boss.wantSafeRushPractice: + boss.b_setAttackCode(ToontownGlobals.BossCogDizzyNow) + boss.b_setAttackCode(ToontownGlobals.BossCogDizzy) + class rcr(MagicWord): desc = "Restarts the crane round" execLocation = MagicWordConfig.EXEC_LOC_SERVER diff --git a/toontown/suit/DistributedCashbotBoss.py b/toontown/suit/DistributedCashbotBoss.py index c3d0e2f6..90157700 100644 --- a/toontown/suit/DistributedCashbotBoss.py +++ b/toontown/suit/DistributedCashbotBoss.py @@ -381,7 +381,11 @@ def loadEnvironment(self): self.midVault = loader.loadModel('phase_10/models/cogHQ/MidVault.bam') self.endVault = loader.loadModel('phase_10/models/cogHQ/EndVault.bam') self.lightning = loader.loadModel('phase_10/models/cogHQ/CBLightning.bam') - self.magnet = loader.loadModel('phase_10/models/cogHQ/CBMagnet.bam') + self.magnet = loader.loadModel('phase_10/models/cogHQ/CBMagnetBlue.bam') + self.sideMagnet = loader.loadModel('phase_10/models/cogHQ/CBMagnetRed.bam') + if base.config.GetBool('want-legacy-heads'): + self.magnet = loader.loadModel('phase_10/models/cogHQ/CBMagnet.bam') + self.sideMagnet = loader.loadModel('phase_10/models/cogHQ/CBMagnetRed.bam') self.craneArm = loader.loadModel('phase_10/models/cogHQ/CBCraneArm.bam') self.controls = loader.loadModel('phase_10/models/cogHQ/CBCraneControls.bam') self.stick = loader.loadModel('phase_10/models/cogHQ/CBCraneStick.bam') diff --git a/toontown/toon/LocalToon.py b/toontown/toon/LocalToon.py index 9303a9da..10231d10 100644 --- a/toontown/toon/LocalToon.py +++ b/toontown/toon/LocalToon.py @@ -390,8 +390,7 @@ def initInterface(self): guiButton = loader.loadModel('phase_3/models/gui/quit_button') self.purchaseButton = DirectButton(parent=aspect2d, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=0.9, text=TTLocalizer.OptionsPagePurchase, text_scale=0.05, text_pos=(0, -0.01), textMayChange=0, pos=(0.885, 0, -0.94), sortOrder=100, command=self.__handlePurchase) base.setCellsAvailable([base.bottomCells[4]], 0) - self.accept(base.SECONDARY_ACTION, self.__beginZeroPowerToss) - self.accept(base.SECONDARY_ACTION + '-up', self.__endZeroPowerToss) + self.accept(base.SECONDARY_ACTION, self.__zeroPowerToss) self.accept('time-' + base.ACTION_BUTTON, self.__beginTossPie) self.accept('time-' + base.ACTION_BUTTON + '-up', self.__endTossPie) self.accept('pieHit', self.__pieHit) @@ -667,23 +666,8 @@ def __endTossPie(self, time): self.localTossPie(power) return - def __beginZeroPowerToss(self): - if self.tossPieStart != None: - return - if not self.allowPies: - return - if self.numPies == 0: - messenger.send('outOfPies') - return - if self.__pieInHand(): - return - if getattr(self.controlManager.currentControls, 'isAirborne', 0): - return - messenger.send('wakeup') - self.localPresentPie(0) - - def __endZeroPowerToss(self): - power = 0 + def __zeroPowerToss(self): + self.__beginTossPie(0) self.__endTossPie(0) def localPresentPie(self, time): diff --git a/toontown/toon/Toon.py b/toontown/toon/Toon.py index e6f374ff..c840c3fa 100644 --- a/toontown/toon/Toon.py +++ b/toontown/toon/Toon.py @@ -2929,8 +2929,8 @@ def getPresentPieInterval(self, x, y, z, h, p, r): pingpongPie = Sequence() if pieType == 'actor': animPie = ActorInterval(pie, pieName, startFrame=0, endFrame=31) - pingpongPie = Func(pie.pingpong, pieName, fromFrame=32, toFrame=47) - track = Sequence(Func(self.setPosHpr, x, y, z, h, p, r), Func(pie.reparentTo, self.rightHand), Func(pie.setPosHpr, 0, 0, 0, 0, 0, 0), Parallel(pie.scaleInterval(1, self.pieScale, startScale=MovieUtil.PNT3_NEARZERO), ActorInterval(self, 'throw', startFrame=0, endFrame=31), animPie), Func(self.pingpong, 'throw', fromFrame=32, toFrame=47), pingpongPie) + pingpongPie = Func(pie.pingpong, pieName, fromFrame=32, toFrame=45) + track = Sequence(Func(self.setPosHpr, x, y, z, h, p, r), Func(pie.reparentTo, self.rightHand), Func(pie.setPosHpr, 0, 0, 0, 0, 0, 0), Parallel(pie.scaleInterval(1, self.pieScale, startScale=MovieUtil.PNT3_NEARZERO), ActorInterval(self, 'throw', startFrame=0, endFrame=31), animPie), Func(self.pingpong, 'throw', fromFrame=32, toFrame=45), pingpongPie) return track def getTossPieInterval(self, x, y, z, h, p, r, power, beginFlyIval = Sequence()): diff --git a/toontown/toon/ToonHead.py b/toontown/toon/ToonHead.py index e1629c4d..62d30f76 100644 --- a/toontown/toon/ToonHead.py +++ b/toontown/toon/ToonHead.py @@ -39,7 +39,7 @@ 'e': '/models/char/koala-heads-', 'j': '/models/char/kangaroo-heads-', 'k': '/models/char/kiwi-heads-', - 'l': '/models/char/armadillo-heads' + 'l': '/models/char/armadillo-heads-' } elif base.config.GetBool('want-legacy-heads', 1): diff --git a/toontown/toonbase/ToonBase.py b/toontown/toonbase/ToonBase.py index 8758bde9..eed34abf 100644 --- a/toontown/toonbase/ToonBase.py +++ b/toontown/toonbase/ToonBase.py @@ -21,6 +21,7 @@ import tempfile import atexit import shutil +import time class ToonBase(OTPBase.OTPBase): notify = DirectNotifyGlobal.directNotify.newCategory('ToonBase') @@ -245,8 +246,9 @@ def takeScreenShot(self): if not os.path.exists('screenshots/'): os.mkdir('screenshots/') - namePrefix = 'screenshot' - namePrefix = 'screenshots/' + launcher.logPrefix + namePrefix + namePrefix = 'screenshot-' + timestamp = int(time.time()) + namePrefix = 'screenshots/' + launcher.logPrefix + namePrefix + str(timestamp) + '.png' timedif = globalClock.getRealTime() - self.lastScreenShotTime if self.glitchCount > 10 and self.walking: return @@ -254,7 +256,7 @@ def takeScreenShot(self): self.glitchCount += 1 return if not hasattr(self, 'localAvatar'): - self.screenshot(namePrefix=namePrefix) + self.screenshot(namePrefix=namePrefix, defaultFilename=0) self.lastScreenShotTime = globalClock.getRealTime() return coordOnScreen = self.config.GetBool('screenshot-coords', 0) @@ -270,7 +272,7 @@ def takeScreenShot(self): strTextLabel = DirectLabel(pos=(0.0, 0.001, 0.9), text=self.screenshotStr, text_scale=0.05, text_fg=VBase4(1.0, 1.0, 1.0, 1.0), text_bg=(0, 0, 0, 0), text_shadow=(0, 0, 0, 1), relief=None) strTextLabel.setBin('gui-popup', 0) self.graphicsEngine.renderFrame() - self.screenshot(namePrefix=namePrefix, imageComment=ctext + ' ' + self.screenshotStr) + self.screenshot(namePrefix=namePrefix, defaultFilename=0, imageComment=ctext + ' ' + self.screenshotStr) self.lastScreenShotTime = globalClock.getRealTime() if coordOnScreen: if strTextLabel is not None: @@ -454,6 +456,7 @@ def loadFromSettings(self): musicVol = self.settings.getFloat('game', 'music-volume', 1.0) sfxVol = self.settings.getFloat('game', 'sfx-volume', 1.0) res = self.settings.getList('game', 'resolution', [800, 600]) + toggleFpsMeter = self.settings.getBool('game', 'want-fps-meter', False) antialias = self.settings.getInt('game', 'antialiasing', 0) if antialias: loadPrcFileData('toonBase Settings Framebuffer MSAA', 'framebuffer-multisample 1') @@ -470,6 +473,7 @@ def loadFromSettings(self): loadPrcFileData('toonBase Settings Toon Chat Sounds', 'toon-chat-sounds %s' % toonChatSounds) loadPrcFileData('toonBase Settings Custom Keybinds', 'customKeybinds %s' % wantCustomKeybinds) loadPrcFileData('toonBase Settings Keymap', 'keymap %s' % keymap) + loadPrcFileData('toonBase Settings FPS Meter', 'show-frame-rate-meter %s' % toggleFpsMeter) self.settings.loadFromSettings() def reloadControls(self):