mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-25 04:32:33 -06:00
763 lines
39 KiB
Python
763 lines
39 KiB
Python
from pandac.PandaModules import *
|
|
from direct.distributed import DistributedObject
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from toontown.toonbase import ToontownGlobals
|
|
from toontown.toonbase import ToontownBattleGlobals
|
|
from toontown.battle import SuitBattleGlobals
|
|
from toontown.toonbase import TTLocalizer
|
|
import HolidayDecorator
|
|
import HalloweenHolidayDecorator
|
|
import CrashedLeaderBoardDecorator
|
|
from direct.interval.IntervalGlobal import *
|
|
import calendar
|
|
from copy import deepcopy
|
|
from toontown.suit import SuitDNA
|
|
from otp.ai.MagicWordGlobal import *
|
|
|
|
|
|
decorationHolidays = [ToontownGlobals.WINTER_DECORATIONS,
|
|
ToontownGlobals.WACKY_WINTER_DECORATIONS,
|
|
ToontownGlobals.HALLOWEEN_PROPS,
|
|
ToontownGlobals.SPOOKY_PROPS,
|
|
ToontownGlobals.HALLOWEEN_COSTUMES,
|
|
ToontownGlobals.SPOOKY_COSTUMES,
|
|
ToontownGlobals.CRASHED_LEADERBOARD]
|
|
promotionalSpeedChatHolidays = []
|
|
|
|
|
|
class NewsManager(DistributedObject.DistributedObject):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('NewsManager')
|
|
neverDisable = 1
|
|
YearlyHolidayType = 1
|
|
OncelyHolidayType = 2
|
|
RelativelyHolidayType = 3
|
|
OncelyMultipleStartHolidayType = 4
|
|
|
|
def __init__(self, cr):
|
|
DistributedObject.DistributedObject.__init__(self, cr)
|
|
self.population = 0
|
|
self.invading = 0
|
|
|
|
forcedHolidayDecorations = base.config.GetString('force-holiday-decorations', '')
|
|
self.decorationHolidayIds = []
|
|
|
|
if forcedHolidayDecorations != '':
|
|
forcedHolidayDecorations = forcedHolidayDecorations.split(',')
|
|
for HID in forcedHolidayDecorations:
|
|
try:
|
|
self.decorationHolidayIds.append(decorationHolidays[int(HID)])
|
|
except:
|
|
print 'holidayId value error: "%s"... skipping' %HID
|
|
|
|
self.holidayDecorator = None
|
|
self.holidayIdList = []
|
|
base.cr.newsManager = self
|
|
base.localAvatar.inventory.setInvasionCreditMultiplier(1)
|
|
self.weeklyCalendarHolidays = []
|
|
return
|
|
|
|
def delete(self):
|
|
self.cr.newsManager = None
|
|
if self.holidayDecorator:
|
|
self.holidayDecorator.exit()
|
|
DistributedObject.DistributedObject.delete(self)
|
|
return
|
|
|
|
def setPopulation(self, population):
|
|
self.population = population
|
|
messenger.send('newPopulation', [population])
|
|
|
|
def getPopulation(self):
|
|
return self.population
|
|
|
|
def sendSystemMessage(self, message, style):
|
|
base.localAvatar.setSystemMessage(style, message)
|
|
|
|
def setInvasionStatus(self, msgType, suitType, remaining, flags):
|
|
if suitType in SuitDNA.suitHeadTypes:
|
|
suitName = SuitBattleGlobals.SuitAttributes[suitType]['name']
|
|
suitNamePlural = SuitBattleGlobals.SuitAttributes[suitType]['pluralname']
|
|
elif suitType in SuitDNA.suitDepts:
|
|
suitName = SuitDNA.getDeptFullname(suitType)
|
|
suitNamePlural = SuitDNA.getDeptFullnameP(suitType)
|
|
|
|
messages = []
|
|
|
|
if msgType == ToontownGlobals.SuitInvasionBegin:
|
|
messages.append(TTLocalizer.SuitInvasionBegin1)
|
|
messages.append(TTLocalizer.SuitInvasionBegin2 % suitNamePlural)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.SuitInvasionEnd:
|
|
messages.append(TTLocalizer.SuitInvasionEnd1 % suitName)
|
|
messages.append(TTLocalizer.SuitInvasionEnd2)
|
|
self.invading = 0
|
|
elif msgType == ToontownGlobals.SuitInvasionUpdate:
|
|
messages.append(TTLocalizer.SuitInvasionUpdate1)
|
|
messages.append(TTLocalizer.SuitInvasionUpdate2)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.SuitInvasionBulletin:
|
|
messages.append(TTLocalizer.SuitInvasionBulletin1)
|
|
messages.append(TTLocalizer.SuitInvasionBulletin2 % suitNamePlural)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.SkelecogInvasionBegin:
|
|
messages.append(TTLocalizer.SkelecogInvasionBegin1)
|
|
messages.append(TTLocalizer.SkelecogInvasionBegin2)
|
|
messages.append(TTLocalizer.SkelecogInvasionBegin3)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.SkelecogInvasionEnd:
|
|
messages.append(TTLocalizer.SkelecogInvasionEnd1)
|
|
messages.append(TTLocalizer.SkelecogInvasionEnd2)
|
|
self.invading = 0
|
|
elif msgType == ToontownGlobals.SkelecogInvasionBulletin:
|
|
messages.append(TTLocalizer.SkelecogInvasionBulletin1)
|
|
messages.append(TTLocalizer.SkelecogInvasionBulletin2)
|
|
messages.append(TTLocalizer.SkelecogInvasionBulletin3)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.WaiterInvasionBegin:
|
|
messages.append(TTLocalizer.WaiterInvasionBegin1)
|
|
messages.append(TTLocalizer.WaiterInvasionBegin2)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.WaiterInvasionEnd:
|
|
messages.append(TTLocalizer.WaiterInvasionEnd1)
|
|
messages.append(TTLocalizer.WaiterInvasionEnd2)
|
|
self.invading = 0
|
|
elif msgType == ToontownGlobals.WaiterInvasionBulletin:
|
|
messages.append(TTLocalizer.WaiterInvasionBulletin1)
|
|
messages.append(TTLocalizer.WaiterInvasionBulletin2)
|
|
messages.append(TTLocalizer.WaiterInvasionBulletin3)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.V2InvasionBegin:
|
|
messages.append(TTLocalizer.V2InvasionBegin1)
|
|
messages.append(TTLocalizer.V2InvasionBegin2)
|
|
messages.append(TTLocalizer.V2InvasionBegin3)
|
|
self.invading = 1
|
|
elif msgType == ToontownGlobals.V2InvasionEnd:
|
|
messages.append(TTLocalizer.V2InvasionEnd1)
|
|
messages.append(TTLocalizer.V2InvasionEnd2)
|
|
self.invading = 0
|
|
elif msgType == ToontownGlobals.V2InvasionBulletin:
|
|
messages.append(TTLocalizer.V2InvasionBulletin1)
|
|
messages.append(TTLocalizer.V2InvasionBulletin2)
|
|
messages.append(TTLocalizer.V2InvasionBulletin3)
|
|
self.invading = 1
|
|
else:
|
|
self.notify.warning('setInvasionStatus: invalid msgType: %s' % msgType)
|
|
return
|
|
|
|
multiplier = 1
|
|
if self.invading:
|
|
multiplier = ToontownBattleGlobals.getInvasionMultiplier()
|
|
base.localAvatar.inventory.setInvasionCreditMultiplier(multiplier)
|
|
|
|
track = Sequence(name='newsManagerWait', autoPause=1)
|
|
for i, message in enumerate(messages):
|
|
if i == 0:
|
|
track.append(Wait(1))
|
|
else:
|
|
track.append(Wait(5))
|
|
track.append(Func(base.localAvatar.setSystemMessage, 0, message))
|
|
track.start()
|
|
|
|
def getInvading(self):
|
|
return self.invading
|
|
|
|
def startHoliday(self, holidayId):
|
|
if holidayId not in self.holidayIdList:
|
|
self.notify.info('setHolidayId: Starting Holiday %s' % holidayId)
|
|
self.holidayIdList.append(holidayId)
|
|
if holidayId in decorationHolidays:
|
|
self.decorationHolidayIds.append(holidayId)
|
|
if holidayId == ToontownGlobals.HALLOWEEN_PROPS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addHalloweenMenu()
|
|
self.setHalloweenPropsHolidayStart()
|
|
elif holidayId == ToontownGlobals.SPOOKY_PROPS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addHalloweenMenu()
|
|
self.setSpookyPropsHolidayStart()
|
|
elif holidayId == ToontownGlobals.WINTER_DECORATIONS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addWinterMenu()
|
|
self.setWinterDecorationsStart()
|
|
elif holidayId == ToontownGlobals.WACKY_WINTER_DECORATIONS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addWinterMenu()
|
|
self.setWackyWinterDecorationsStart()
|
|
if hasattr(base.cr.playGame, 'dnaStore') and hasattr(base.cr.playGame, 'hood') and hasattr(base.cr.playGame.hood, 'loader'):
|
|
if holidayId == ToontownGlobals.HALLOWEEN_COSTUMES or holidayId == ToontownGlobals.SPOOKY_COSTUMES:
|
|
self.holidayDecorator = HalloweenHolidayDecorator.HalloweenHolidayDecorator()
|
|
elif holidayId == ToontownGlobals.CRASHED_LEADERBOARD:
|
|
self.holidayDecorator = CrashedLeaderBoardDecorator.CrashedLeaderBoardDecorator()
|
|
else:
|
|
self.holidayDecorator = HolidayDecorator.HolidayDecorator()
|
|
self.holidayDecorator.decorate()
|
|
messenger.send('decorator-holiday-%d-starting' % holidayId)
|
|
elif holidayId in promotionalSpeedChatHolidays:
|
|
if hasattr(base, 'TTSCPromotionalMenu'):
|
|
base.TTSCPromotionalMenu.startHoliday(holidayId)
|
|
elif holidayId == ToontownGlobals.SILLY_SATURDAY_BINGO:
|
|
self.setBingoOngoing()
|
|
elif holidayId == ToontownGlobals.MORE_XP_HOLIDAY:
|
|
self.setMoreXpHolidayStart()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_DAY:
|
|
pass
|
|
elif holidayId == ToontownGlobals.CIRCUIT_RACING_EVENT:
|
|
self.setGrandPrixWeekendStart()
|
|
elif holidayId == ToontownGlobals.APRIL_FOOLS_COSTUMES:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addAprilToonsMenu()
|
|
elif holidayId == ToontownGlobals.WINTER_CAROLING:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addCarolMenu()
|
|
self.setWinterCarolingStart()
|
|
elif holidayId == ToontownGlobals.WACKY_WINTER_CAROLING:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addCarolMenu()
|
|
elif holidayId == ToontownGlobals.VALENTINES_DAY:
|
|
messenger.send('ValentinesDayStart')
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.ValentinesDayStart)
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_ONE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSillyPhaseOneMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_TWO:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSillyPhaseTwoMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_THREE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSillyPhaseThreeMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_FOUR:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSillyPhaseFourMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_FIVE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSillyPhaseFiveMenu()
|
|
elif holidayId == ToontownGlobals.VICTORY_PARTY_HOLIDAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addVictoryPartiesMenu()
|
|
elif holidayId == ToontownGlobals.SELLBOT_NERF_HOLIDAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setSellbotNerfHolidayStart()
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSellbotNerfMenu()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_TROLLEY_HOLIDAY or holidayId == ToontownGlobals.JELLYBEAN_TROLLEY_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addJellybeanJamMenu(TTSCJellybeanJamMenu.JellybeanJamPhases.TROLLEY)
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_FISHING_HOLIDAY or holidayId == ToontownGlobals.JELLYBEAN_FISHING_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addJellybeanJamMenu(TTSCJellybeanJamMenu.JellybeanJamPhases.FISHING)
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_PARTIES_HOLIDAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setJellybeanPartiesHolidayStart()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_PARTIES_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setJellybeanMonthHolidayStart()
|
|
elif holidayId == ToontownGlobals.BLACK_CAT_DAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setBlackCatHolidayStart()
|
|
elif holidayId == ToontownGlobals.SPOOKY_BLACK_CAT:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setSpookyBlackCatHolidayStart()
|
|
elif holidayId == ToontownGlobals.LAUGHING_MAN:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar:
|
|
self.setLaughingManHolidayStart()
|
|
elif holidayId == ToontownGlobals.TOP_TOONS_MARATHON:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setTopToonsMarathonStart()
|
|
elif holidayId == ToontownGlobals.SELLBOT_INVASION:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSellbotInvasionMenu()
|
|
elif holidayId == ToontownGlobals.SELLBOT_FIELD_OFFICE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addSellbotFieldOfficeMenu()
|
|
elif holidayId == ToontownGlobals.IDES_OF_MARCH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setIdesOfMarchStart()
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.addIdesOfMarchMenu()
|
|
elif holidayId == ToontownGlobals.EXPANDED_CLOSETS:
|
|
self.setExpandedClosetsStart()
|
|
elif holidayId == ToontownGlobals.KARTING_TICKETS_HOLIDAY:
|
|
self.setKartingTicketsHolidayStart()
|
|
return True
|
|
return False
|
|
|
|
def endHoliday(self, holidayId):
|
|
if holidayId in self.holidayIdList:
|
|
self.notify.info('setHolidayId: Ending Holiday %s' % holidayId)
|
|
self.holidayIdList.remove(holidayId)
|
|
if holidayId in self.decorationHolidayIds:
|
|
self.decorationHolidayIds.remove(holidayId)
|
|
if holidayId == ToontownGlobals.HALLOWEEN_PROPS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeHalloweenMenu()
|
|
self.setHalloweenPropsHolidayEnd()
|
|
elif holidayId == ToontownGlobals.SPOOKY_PROPS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeHalloweenMenu()
|
|
self.setSpookyPropsHolidayEnd()
|
|
elif holidayId == ToontownGlobals.WINTER_DECORATIONS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeWinterMenu()
|
|
self.setWinterDecorationsEnd()
|
|
elif holidayId == ToontownGlobals.WACKY_WINTER_DECORATIONS:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeWinterMenu()
|
|
if hasattr(base.cr.playGame, 'dnaStore') and hasattr(base.cr.playGame, 'hood') and hasattr(base.cr.playGame.hood, 'loader'):
|
|
if holidayId == ToontownGlobals.HALLOWEEN_COSTUMES or holidayId == ToontownGlobals.SPOOKY_COSTUMES:
|
|
self.holidayDecorator = HalloweenHolidayDecorator.HalloweenHolidayDecorator()
|
|
elif holidayId == ToontownGlobals.CRASHED_LEADERBOARD:
|
|
self.holidayDecorator = CrashedLeaderBoardDecorator.CrashedLeaderBoardDecorator()
|
|
else:
|
|
self.holidayDecorator = HolidayDecorator.HolidayDecorator()
|
|
self.holidayDecorator.undecorate()
|
|
messenger.send('decorator-holiday-%d-ending' % holidayId)
|
|
elif holidayId in promotionalSpeedChatHolidays:
|
|
if hasattr(base, 'TTSCPromotionalMenu'):
|
|
base.TTSCPromotionalMenu.endHoliday(holidayId)
|
|
elif holidayId == ToontownGlobals.SILLY_SATURDAY_BINGO:
|
|
self.setBingoEnd()
|
|
elif holidayId == ToontownGlobals.MORE_XP_HOLIDAY:
|
|
self.setMoreXpHolidayEnd()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_DAY:
|
|
pass
|
|
elif holidayId == ToontownGlobals.CIRCUIT_RACING_EVENT:
|
|
self.setGrandPrixWeekendEnd()
|
|
elif holidayId == ToontownGlobals.APRIL_FOOLS_COSTUMES:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeAprilToonsMenu()
|
|
elif holidayId == ToontownGlobals.VALENTINES_DAY:
|
|
messenger.send('ValentinesDayStop')
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.ValentinesDayEnd)
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_ONE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSillyPhaseOneMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_TWO:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSillyPhaseTwoMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_THREE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSillyPhaseThreeMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_FOUR:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSillyPhaseFourMenu()
|
|
elif holidayId == ToontownGlobals.SILLY_CHATTER_FIVE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSillyPhaseFiveMenu()
|
|
elif holidayId == ToontownGlobals.VICTORY_PARTY_HOLIDAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeVictoryPartiesMenu()
|
|
elif holidayId == ToontownGlobals.WINTER_CAROLING:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeCarolMenu()
|
|
elif holidayId == ToontownGlobals.WACKY_WINTER_CAROLING:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeCarolMenu()
|
|
elif holidayId == ToontownGlobals.SELLBOT_NERF_HOLIDAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setSellbotNerfHolidayEnd()
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSellbotNerfMenu()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_TROLLEY_HOLIDAY or holidayId == ToontownGlobals.JELLYBEAN_TROLLEY_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeJellybeanJamMenu()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_FISHING_HOLIDAY or holidayId == ToontownGlobals.JELLYBEAN_FISHING_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeJellybeanJamMenu()
|
|
elif holidayId == ToontownGlobals.JELLYBEAN_PARTIES_HOLIDAY or holidayId == ToontownGlobals.JELLYBEAN_PARTIES_HOLIDAY_MONTH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setJellybeanPartiesHolidayEnd()
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeJellybeanJamMenu()
|
|
elif holidayId == ToontownGlobals.BLACK_CAT_DAY:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setBlackCatHolidayEnd()
|
|
elif holidayId == ToontownGlobals.SPOOKY_BLACK_CAT:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setSpookyBlackCatHolidayEnd()
|
|
elif holidayId == ToontownGlobals.LAUGHING_MAN:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar:
|
|
self.setLaughingManHolidayEnd()
|
|
elif holidayId == ToontownGlobals.TOP_TOONS_MARATHON:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
self.setTopToonsMarathonEnd()
|
|
elif holidayId == ToontownGlobals.SELLBOT_INVASION:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSellbotInvasionMenu()
|
|
elif holidayId == ToontownGlobals.SELLBOT_FIELD_OFFICE:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeSellbotFieldOfficeMenu()
|
|
elif holidayId == ToontownGlobals.IDES_OF_MARCH:
|
|
if hasattr(base, 'localAvatar') and base.localAvatar and hasattr(base.localAvatar, 'chatMgr') and base.localAvatar.chatMgr:
|
|
base.localAvatar.chatMgr.chatInputSpeedChat.removeIdesOfMarchMenu()
|
|
return True
|
|
return False
|
|
|
|
def setHolidayIdList(self, holidayIdList):
|
|
|
|
def isEnding(id):
|
|
return id not in holidayIdList
|
|
|
|
def isStarting(id):
|
|
return id not in self.holidayIdList
|
|
|
|
toEnd = filter(isEnding, self.holidayIdList)
|
|
for endingHolidayId in toEnd:
|
|
self.endHoliday(endingHolidayId)
|
|
|
|
toStart = filter(isStarting, holidayIdList)
|
|
for startingHolidayId in toStart:
|
|
self.startHoliday(startingHolidayId)
|
|
|
|
messenger.send('setHolidayIdList', [holidayIdList])
|
|
|
|
def getDecorationHolidayId(self):
|
|
return self.decorationHolidayIds
|
|
|
|
def getHolidayIdList(self):
|
|
return self.holidayIdList
|
|
|
|
def setBingoWin(self, zoneId):
|
|
base.localAvatar.setSystemMessage(0, 'Bingo congrats!')
|
|
|
|
def setBingoStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.FishBingoStart)
|
|
|
|
def setBingoOngoing(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.FishBingoOngoing)
|
|
|
|
def setBingoEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.FishBingoEnd)
|
|
|
|
def setCircuitRaceStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.CircuitRaceStart)
|
|
|
|
def setCircuitRaceOngoing(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.CircuitRaceOngoing)
|
|
|
|
def setCircuitRaceEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.CircuitRaceEnd)
|
|
|
|
def setTrolleyHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TrolleyHolidayStart)
|
|
|
|
def setTrolleyHolidayOngoing(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TrolleyHolidayOngoing)
|
|
|
|
def setTrolleyHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TrolleyHolidayEnd)
|
|
|
|
def setTrolleyWeekendStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TrolleyWeekendStart)
|
|
|
|
def setTrolleyWeekendEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TrolleyWeekendEnd)
|
|
|
|
def setMoreXpHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.MoreXpHolidayStart)
|
|
|
|
def setMoreXpHolidayOngoing(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.MoreXpHolidayOngoing)
|
|
|
|
def setMoreXpHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.MoreXpHolidayEnd)
|
|
|
|
def setJellybeanDayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanDayHolidayStart)
|
|
|
|
def setJellybeanDayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanDayHolidayEnd)
|
|
|
|
def setGrandPrixWeekendStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.GrandPrixWeekendHolidayStart)
|
|
|
|
def setGrandPrixWeekendEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.GrandPrixWeekendHolidayEnd)
|
|
|
|
def setSellbotNerfHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.SellbotNerfHolidayStart)
|
|
|
|
def setSellbotNerfHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.SellbotNerfHolidayEnd)
|
|
|
|
def setJellybeanTrolleyHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanTrolleyHolidayStart)
|
|
|
|
def setJellybeanTrolleyHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanTrolleyHolidayEnd)
|
|
|
|
def setJellybeanFishingHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanFishingHolidayStart)
|
|
|
|
def setJellybeanFishingHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanFishingHolidayEnd)
|
|
|
|
def setJellybeanPartiesHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanPartiesHolidayStart)
|
|
|
|
def setJellybeanMonthHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanMonthHolidayStart)
|
|
|
|
def setJellybeanPartiesHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.JellybeanPartiesHolidayEnd)
|
|
|
|
def setHalloweenPropsHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.HalloweenPropsHolidayStart)
|
|
|
|
def setHalloweenPropsHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.HalloweenPropsHolidayEnd)
|
|
|
|
def setSpookyPropsHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.SpookyPropsHolidayStart)
|
|
|
|
def setSpookyPropsHolidayEnd(self):
|
|
pass
|
|
|
|
def setBlackCatHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.BlackCatHolidayStart)
|
|
|
|
def setBlackCatHolidayEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.BlackCatHolidayEnd)
|
|
|
|
def setSpookyBlackCatHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.SpookyBlackCatHolidayStart)
|
|
for currToon in base.cr.toons.values():
|
|
currToon.setDNA(currToon.style.clone())
|
|
|
|
def setSpookyBlackCatHolidayEnd(self):
|
|
for currToon in base.cr.toons.values():
|
|
currToon.setDNA(currToon.style.clone())
|
|
|
|
def setLaughingManHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.LaughingManHolidayStart)
|
|
for currToon in base.cr.toons.values():
|
|
currToon.generateLaughingMan()
|
|
|
|
def setLaughingManHolidayEnd(self):
|
|
for currToon in base.cr.toons.values():
|
|
currToon.swapToonHead(laughingMan=currToon.getWantLaughingMan())
|
|
|
|
def setTopToonsMarathonStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TopToonsMarathonStart)
|
|
|
|
def setTopToonsMarathonEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.TopToonsMarathonEnd)
|
|
|
|
def setWinterDecorationsStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.WinterDecorationsStart)
|
|
|
|
def setWinterDecorationsEnd(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.WinterDecorationsEnd)
|
|
|
|
def setWackyWinterDecorationsStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.WackyWinterDecorationsStart)
|
|
|
|
def setWinterCarolingStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.WinterCarolingStart)
|
|
|
|
def setExpandedClosetsStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.ExpandedClosetsStart)
|
|
|
|
def setKartingTicketsHolidayStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.KartingTicketsHolidayStart)
|
|
|
|
def setIdesOfMarchStart(self):
|
|
base.localAvatar.setSystemMessage(0, TTLocalizer.IdesOfMarchStart)
|
|
|
|
def holidayNotify(self):
|
|
for id in self.holidayIdList:
|
|
if id == 20:
|
|
self.setCircuitRaceOngoing()
|
|
elif id == 21:
|
|
self.setTrolleyHolidayOngoing()
|
|
|
|
def setWeeklyCalendarHolidays(self, weeklyCalendarHolidays):
|
|
self.weeklyCalendarHolidays = weeklyCalendarHolidays
|
|
|
|
def getHolidaysForWeekday(self, day):
|
|
result = []
|
|
for item in self.weeklyCalendarHolidays:
|
|
if item[1] == day:
|
|
result.append(item[0])
|
|
|
|
return result
|
|
|
|
def setYearlyCalendarHolidays(self, yearlyCalendarHolidays):
|
|
self.yearlyCalendarHolidays = yearlyCalendarHolidays
|
|
|
|
def getYearlyHolidaysForDate(self, theDate):
|
|
result = []
|
|
for item in self.yearlyCalendarHolidays:
|
|
if item[1][0] == theDate.month and item[1][1] == theDate.day:
|
|
newItem = [self.YearlyHolidayType] + list(item)
|
|
result.append(tuple(newItem))
|
|
continue
|
|
if item[2][0] == theDate.month and item[2][1] == theDate.day:
|
|
newItem = [self.YearlyHolidayType] + list(item)
|
|
result.append(tuple(newItem))
|
|
|
|
return result
|
|
|
|
def setMultipleStartHolidays(self, multipleStartHolidays):
|
|
self.multipleStartHolidays = multipleStartHolidays
|
|
|
|
def getMultipleStartHolidaysForDate(self, theDate):
|
|
result = []
|
|
for theHoliday in self.multipleStartHolidays:
|
|
times = theHoliday[1:]
|
|
tempTimes = times[0]
|
|
for startAndStopTimes in tempTimes:
|
|
startTime = startAndStopTimes[0]
|
|
endTime = startAndStopTimes[1]
|
|
if startTime[0] == theDate.year and startTime[1] == theDate.month and startTime[2] == theDate.day:
|
|
fakeOncelyHoliday = [theHoliday[0], startTime, endTime]
|
|
newItem = [self.OncelyMultipleStartHolidayType] + fakeOncelyHoliday
|
|
result.append(tuple(newItem))
|
|
continue
|
|
if endTime[0] == theDate.year and endTime[1] == theDate.month and endTime[2] == theDate.day:
|
|
fakeOncelyHoliday = [theHoliday[0], startTime, endTime]
|
|
newItem = [self.OncelyMultipleStartHolidayType] + fakeOncelyHoliday
|
|
result.append(tuple(newItem))
|
|
|
|
return result
|
|
|
|
def setOncelyCalendarHolidays(self, oncelyCalendarHolidays):
|
|
self.oncelyCalendarHolidays = oncelyCalendarHolidays
|
|
|
|
def getOncelyHolidaysForDate(self, theDate):
|
|
result = []
|
|
for item in self.oncelyCalendarHolidays:
|
|
if item[1][0] == theDate.year and item[1][1] == theDate.month and item[1][2] == theDate.day:
|
|
newItem = [self.OncelyHolidayType] + list(item)
|
|
result.append(tuple(newItem))
|
|
continue
|
|
if item[2][0] == theDate.year and item[2][1] == theDate.month and item[2][2] == theDate.day:
|
|
newItem = [self.OncelyHolidayType] + list(item)
|
|
result.append(tuple(newItem))
|
|
|
|
return result
|
|
|
|
def setRelativelyCalendarHolidays(self, relativelyCalendarHolidays):
|
|
self.relativelyCalendarHolidays = relativelyCalendarHolidays
|
|
|
|
def getRelativelyHolidaysForDate(self, theDate):
|
|
result = []
|
|
self.weekDaysInMonth = []
|
|
self.numDaysCorMatrix = [(28, 0), (29, 1), (30, 2), (31, 3)]
|
|
|
|
for i in xrange(7):
|
|
self.weekDaysInMonth.append((i, 4))
|
|
|
|
for holidayItem in self.relativelyCalendarHolidays:
|
|
item = deepcopy(holidayItem)
|
|
|
|
newItem = []
|
|
newItem.append(item[0])
|
|
|
|
i = 1
|
|
while i < len(item):
|
|
sRepNum = item[i][1]
|
|
sWeekday = item[i][2]
|
|
eWeekday = item[i+1][2]
|
|
|
|
while 1:
|
|
eRepNum = item[i+1][1]
|
|
|
|
self.initRepMatrix(theDate.year, item[i][0])
|
|
while self.weekDaysInMonth[sWeekday][1] < sRepNum:
|
|
sRepNum -= 1
|
|
|
|
sDay = self.dayForWeekday(theDate.year, item[i][0], sWeekday, sRepNum)
|
|
|
|
self.initRepMatrix(theDate.year, item[i+1][0])
|
|
while self.weekDaysInMonth[eWeekday][1] < eRepNum:
|
|
eRepNum -= 1
|
|
|
|
nDay = self.dayForWeekday(theDate.year, item[i+1][0], eWeekday, eRepNum)
|
|
|
|
if ((nDay > sDay and
|
|
item[i+1][0] == item[i][0] and
|
|
(item[i+1][1] - item[i][1]) <= (nDay - sDay + abs(eWeekday - sWeekday))/7) or
|
|
item[i+1][0] != item[i][0]):
|
|
break
|
|
|
|
if self.weekDaysInMonth[eWeekday][1] > eRepNum:
|
|
eRepNum += 1
|
|
else:
|
|
item[i+1][0] += 1
|
|
item[i+1][1] = 1
|
|
|
|
newItem.append([item[i][0], sDay, item[i][3], item[i][4], item[i][5]])
|
|
|
|
newItem.append([item[i+1][0], nDay, item[i+1][3], item[i+1][4], item[i+1][5]])
|
|
|
|
i += 2
|
|
|
|
if item[1][0] == theDate.month and newItem[1][1] == theDate.day:
|
|
nItem = [self.RelativelyHolidayType] + list(newItem)
|
|
result.append(tuple(nItem))
|
|
continue
|
|
|
|
if item[2][0] == theDate.month and newItem[2][1] == theDate.day:
|
|
nItem = [self.RelativelyHolidayType] + list(newItem)
|
|
result.append(tuple(nItem))
|
|
|
|
return result
|
|
|
|
def dayForWeekday(self, year, month, weekday, repNum):
|
|
monthDays = calendar.monthcalendar(year, month)
|
|
if monthDays[0][weekday] == 0:
|
|
repNum += 1
|
|
return monthDays[repNum - 1][weekday]
|
|
|
|
def initRepMatrix(self, year, month):
|
|
for i in xrange(7):
|
|
self.weekDaysInMonth[i] = (i, 4)
|
|
|
|
startingWeekDay, numDays = calendar.monthrange(year, month)
|
|
if startingWeekDay > 6:
|
|
import pdb
|
|
pdb.set_trace()
|
|
for i in xrange(4):
|
|
if numDays == self.numDaysCorMatrix[i][0]:
|
|
break
|
|
|
|
for j in xrange(self.numDaysCorMatrix[i][1]):
|
|
self.weekDaysInMonth[startingWeekDay] = (self.weekDaysInMonth[startingWeekDay][0], self.weekDaysInMonth[startingWeekDay][1] + 1)
|
|
startingWeekDay = (startingWeekDay + 1) % 7
|
|
|
|
def isHolidayRunning(self, holidayId):
|
|
return holidayId in self.holidayIdList
|
|
|
|
def getHoliday(id):
|
|
if id.isdigit():
|
|
return int(id)
|
|
elif hasattr(ToontownGlobals, id):
|
|
return getattr(ToontownGlobals, id)
|
|
|
|
return -1
|
|
|
|
@magicWord(category=CATEGORY_PROGRAMMER, types=[str])
|
|
def startHoliday(id):
|
|
"""
|
|
Start a holiday.
|
|
"""
|
|
holiday = getHoliday(id.upper())
|
|
|
|
if holiday < 0:
|
|
return "Couldn't find holiday " + id + '!'
|
|
|
|
if base.cr.newsManager.startHoliday(holiday):
|
|
return 'Successfully started holiday ' + id + '!'
|
|
else:
|
|
return id + ' is already running!'
|
|
|
|
@magicWord(category=CATEGORY_PROGRAMMER, types=[str])
|
|
def endHoliday(id):
|
|
"""
|
|
End a holiday.
|
|
"""
|
|
holiday = getHoliday(id.upper())
|
|
|
|
if holiday < 0:
|
|
return "Couldn't find holiday " + id + '!'
|
|
|
|
if base.cr.newsManager.endHoliday(holiday):
|
|
return 'Successfully stopped holiday ' + id + '!'
|
|
else:
|
|
return id + ' is not running!'
|