Holiday stuff - cleanup, add Laughing Man holiday (everybody gets Laughing Man heads, including NPCs), add ~startHoliday and ~endHoliday magic word, clean up Laughing Man effect, remove Secret NPC

This commit is contained in:
DenialMC 2015-04-04 11:20:42 +03:00
parent 7065e2b06f
commit e0df87ac48
9 changed files with 75 additions and 61 deletions

View file

@ -17,8 +17,7 @@ class HolidayManagerAI:
simbase.air.newsManager.setHolidayIdList([self.currentHolidays])
def isHolidayRunning(self, holidayId):
if holidayId in self.currentHolidays:
return True
return holidayId in self.currentHolidays
def isMoreXpHolidayRunning(self):
if ToontownGlobals.MORE_XP_HOLIDAY in self.currentHolidays:

View file

@ -12,6 +12,7 @@ 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,
@ -258,6 +259,9 @@ class NewsManager(DistributedObject.DistributedObject):
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()
@ -275,6 +279,8 @@ class NewsManager(DistributedObject.DistributedObject):
self.setExpandedClosetsStart()
elif holidayId == ToontownGlobals.KARTING_TICKETS_HOLIDAY:
self.setKartingTicketsHolidayStart()
return True
return False
def endHoliday(self, holidayId):
if holidayId in self.holidayIdList:
@ -377,6 +383,8 @@ class NewsManager(DistributedObject.DistributedObject):
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):
@ -531,6 +539,11 @@ class NewsManager(DistributedObject.DistributedObject):
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 setTopToonsMarathonStart(self):
base.localAvatar.setSystemMessage(0, TTLocalizer.TopToonsMarathonStart)
@ -725,5 +738,42 @@ class NewsManager(DistributedObject.DistributedObject):
startingWeekDay = (startingWeekDay + 1) % 7
def isHolidayRunning(self, holidayId):
result = holidayId in self.holidayIdList
return result
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!'

View file

@ -1,27 +0,0 @@
from DistributedNPCToonBase import *
from toontown.chat.ChatGlobals import *
from toontown.nametag.NametagGlobals import *
class DistributedNPCSecret(DistributedNPCToonBase):
def __init__(self, cr):
DistributedNPCToonBase.__init__(self, cr)
def delayDelete(self):
DistributedNPCToonBase.delayDelete(self)
DistributedNPCToonBase.disable(self)
def handleCollisionSphereEnter(self, collEntry):
self.sendUpdate('avatarEnter', [])
def createBot(self, chatPhraseId):
chatPhrases = [
"I'm Kyle, AKA the chicken lord, and I like to make bots!",
'I love the smell of fresh bots in the morning...',
'Bots... bots... bots...',
"Patch the Injector, or we'll continue...",
"All the kids who sweat it out... it's unbelievable! Let's give them more bots!",
"Master Milton is sweaty. Here's another bot!"
]
self.setChatAbsolute(chatPhrases[chatPhraseId], CFSpeech|CFTimeout)

View file

@ -1,22 +0,0 @@
from otp.ai.AIBaseGlobal import *
from DistributedNPCToonBaseAI import *
from ToonDNA import *
from DistributedBotAI import *
import random
class DistributedNPCSecretAI(DistributedNPCToonBaseAI):
def __init__(self, air, npcId, questCallback=None, hq=0):
DistributedNPCToonBaseAI.__init__(self, air, npcId, questCallback)
self.air = air
def avatarEnter(self):
self.sendUpdate('createBot', [random.randrange(6)])
dna = ToonDNA()
dna.newToonRandom()
newToon = DistributedBotAI(self.cr)
newToon.b_setDNAString(dna.makeNetString())
x = (random.random()*10) + 10
y = (random.random()*10) + 10
z = 4
newToon.sendUpdate('setPos', [x, y, z])

View file

@ -55,6 +55,7 @@ class DistributedNPCToonBase(DistributedToon.DistributedToon):
self.parentToonParts()
self.rescaleToon()
self.resetHeight()
self.generateLaughingMan()
self.rightHands = []
self.leftHands = []
self.headParts = []

View file

@ -1,6 +1,5 @@
from pandac.PandaModules import *
def makeCard(book=False):
cardMaker = CardMaker('laughing-man-cm')
cardMaker.setHasUvs(1)
@ -27,17 +26,16 @@ def makeCard(book=False):
return nodePath
def addHeadEffect(head, book=False):
card = makeCard(book=book)
card.setScale(1.45 if book else 2.5)
card.setZ(0.05 if book else 0.5)
for nodePath in head.getChildren():
nodePath.removeNode()
nodePath.hide()
card.instanceTo(head)
def addToonEffect(toon):
toon.getDialogueArray = lambda *args, **kwargs: []
for lod in toon.getLODNames():
addHeadEffect(toon.getPart('head', lod))
addHeadEffect(toon.getPart('head', lod))

View file

@ -27,7 +27,7 @@ from toontown.nametag.NametagGlobals import *
from toontown.suit import SuitDNA
from toontown.toonbase import TTLocalizer
from toontown.toonbase import ToontownGlobals
from toontown.toon import LaughingManGlobals
def teleportDebug(requestStatus, msg, onlyIfToAv = True):
if teleportNotify.getDebug():
@ -434,6 +434,8 @@ class Toon(Avatar.Avatar, ToonHead):
self.hatNodes = []
self.glassesNodes = []
self.backpackNodes = []
self.wantLaughingMan = False
self.hasLaughingMan = False
self.hat = (0, 0, 0)
self.glasses = (0, 0, 0)
self.backpack = (0, 0, 0)
@ -630,6 +632,7 @@ class Toon(Avatar.Avatar, ToonHead):
self.rescaleToon()
self.resetHeight()
self.setupToonNodes()
self.generateLaughingMan()
def setupToonNodes(self):
rightHand = NodePath('rightHand')
@ -965,6 +968,10 @@ class Toon(Avatar.Avatar, ToonHead):
return swappedTorso
def generateLaughingMan(self):
if not self.getHasLaughingMan() and self.getWantLaughingMan():
LaughingManGlobals.addToonEffect(self)
def generateHat(self, fromRTM = False):
hat = self.getHat()
if hat[0] >= len(ToonDNA.HatModels):
@ -1137,7 +1144,13 @@ class Toon(Avatar.Avatar, ToonHead):
def getHat(self):
return self.hat
def getWantLaughingMan(self):
return self.wantLaughingMan or (base.cr.newsManager and base.cr.newsManager.isHolidayRunning(ToontownGlobals.LAUGHING_MAN))
def getHasLaughingMan(self):
return self.hasLaughingMan
def setGlasses(self, glassesIdx, textureIdx, colorIdx, fromRTM = False):
self.glasses = (glassesIdx, textureIdx, colorIdx)
self.generateGlasses(fromRTM=fromRTM)

View file

@ -8579,6 +8579,7 @@ SpookyPropsHolidayStart = 'Silly Meter spins Toontown into spooky mode!'
BlackCatHolidayStart = 'Create a Black Cat - Today only!'
BlackCatHolidayEnd = 'Black Cat day has ended!'
SpookyBlackCatHolidayStart = 'Friday 13th means a Black Cat blast!'
LaughingManHolidayStart = 'Today is the day of the Laughing Man!'
TopToonsMarathonStart = "The Top Toons New Year's Day Marathon has begun!"
TopToonsMarathonEnd = "The Top Toons New Year's Day Marathon has ended."
WinterDecorationsStart = "It's Winter Holiday time in Toontown!"

View file

@ -962,6 +962,7 @@ SPOOKY_PROPS = 119
SPOOKY_COSTUMES = 120
WACKY_WINTER_DECORATIONS = 121
WACKY_WINTER_CAROLING = 122
LAUGHING_MAN = 123
TOT_REWARD_JELLYBEAN_AMOUNT = 100
TOT_REWARD_END_OFFSET_AMOUNT = 0
LawbotBossMaxDamage = 2700