mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 11:42:39 -06:00
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:
parent
7065e2b06f
commit
e0df87ac48
9 changed files with 75 additions and 61 deletions
|
@ -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:
|
||||
|
|
|
@ -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!'
|
|
@ -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)
|
|
@ -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])
|
|
@ -55,6 +55,7 @@ class DistributedNPCToonBase(DistributedToon.DistributedToon):
|
|||
self.parentToonParts()
|
||||
self.rescaleToon()
|
||||
self.resetHeight()
|
||||
self.generateLaughingMan()
|
||||
self.rightHands = []
|
||||
self.leftHands = []
|
||||
self.headParts = []
|
||||
|
|
|
@ -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))
|
|
@ -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)
|
||||
|
|
|
@ -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!"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue