mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2025-01-09 17:53:50 +00:00
The teleport button now takes jellybeans for usage + add proper teleport coordinates for Toon Hall
This commit is contained in:
parent
64a4f9fe92
commit
6becda3f16
6 changed files with 62 additions and 17 deletions
1
dependencies/astron/dclass/stride.dc
vendored
1
dependencies/astron/dclass/stride.dc
vendored
|
@ -755,6 +755,7 @@ dclass DistributedToon : DistributedPlayer {
|
||||||
requestNametagStyle(uint8) airecv ownsend;
|
requestNametagStyle(uint8) airecv ownsend;
|
||||||
requestFishingRod(uint8) airecv ownsend;
|
requestFishingRod(uint8) airecv ownsend;
|
||||||
wipeStats() airecv ownsend;
|
wipeStats() airecv ownsend;
|
||||||
|
takeMoney(int16) airecv ownsend;
|
||||||
};
|
};
|
||||||
|
|
||||||
dclass DistributedPartyGate : DistributedObject {
|
dclass DistributedPartyGate : DistributedObject {
|
||||||
|
|
|
@ -176,16 +176,17 @@ class ToonInterior(Place.Place):
|
||||||
|
|
||||||
def enterTeleportIn(self, requestStatus):
|
def enterTeleportIn(self, requestStatus):
|
||||||
modelType = DistributedToonInterior.DistributedToonInterior(base.cr).getModelType(self.getZoneId())
|
modelType = DistributedToonInterior.DistributedToonInterior(base.cr).getModelType(self.getZoneId())
|
||||||
if ZoneUtil.isHQ(self.zoneId):
|
if self.zoneId == ToontownGlobals.ToonHall:
|
||||||
|
base.localAvatar.setPosHpr(-63.5, 30.5, ToontownGlobals.FloorOffset, 90.0, 0.0, 0.0)
|
||||||
|
elif ZoneUtil.isHQ(self.zoneId):
|
||||||
base.localAvatar.setPosHpr(-5.5, -1.5, ToontownGlobals.FloorOffset, 0.0, 0.0, 0.0)
|
base.localAvatar.setPosHpr(-5.5, -1.5, ToontownGlobals.FloorOffset, 0.0, 0.0, 0.0)
|
||||||
elif ZoneUtil.isPetshop(self.zoneId):
|
elif ZoneUtil.isPetshop(self.zoneId):
|
||||||
base.localAvatar.setPosHpr(0, 0, ToontownGlobals.FloorOffset, 45.0, 0.0, 0.0)
|
base.localAvatar.setPosHpr(0, 0, ToontownGlobals.FloorOffset, 45.0, 0.0, 0.0)
|
||||||
|
elif modelType in InteriorTypes:
|
||||||
|
area = InteriorTypes[modelType]
|
||||||
|
base.localAvatar.setPosHpr(area[0], area[1], ToontownGlobals.FloorOffset, area[2], 0.0, 0.0)
|
||||||
else:
|
else:
|
||||||
if modelType in InteriorTypes:
|
base.localAvatar.setPosHpr(2.5, 11.5, ToontownGlobals.FloorOffset, 45.0, 0.0, 0.0)
|
||||||
area = InteriorTypes[modelType]
|
|
||||||
base.localAvatar.setPosHpr(area[0], area[1], ToontownGlobals.FloorOffset, area[2], 0.0, 0.0)
|
|
||||||
else:
|
|
||||||
base.localAvatar.setPosHpr(2.5, 11.5, ToontownGlobals.FloorOffset, 45.0, 0.0, 0.0)
|
|
||||||
Place.Place.enterTeleportIn(self, requestStatus)
|
Place.Place.enterTeleportIn(self, requestStatus)
|
||||||
|
|
||||||
def enterTeleportOut(self, requestStatus):
|
def enterTeleportOut(self, requestStatus):
|
||||||
|
|
|
@ -73,11 +73,18 @@ class QuestPoster(DirectFrame):
|
||||||
self.teleportButton = DirectButton(parent=self.questFrame, relief=None, image=circleModel, text=TTLocalizer.TeleportButton, text_scale=0.035, text_pos=(-0.0025, -0.015), pos=(0.175, 0, 0.125), scale=0.75) #, text_bg=(0, 0.75, 1, 1)
|
self.teleportButton = DirectButton(parent=self.questFrame, relief=None, image=circleModel, text=TTLocalizer.TeleportButton, text_scale=0.035, text_pos=(-0.0025, -0.015), pos=(0.175, 0, 0.125), scale=0.75) #, text_bg=(0, 0.75, 1, 1)
|
||||||
self.teleportButton.hide()
|
self.teleportButton.hide()
|
||||||
self.laffMeter = None
|
self.laffMeter = None
|
||||||
return
|
self.dialog = None
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
self._deleteGeoms()
|
self._deleteGeoms()
|
||||||
|
self.destroyDialog()
|
||||||
DirectFrame.destroy(self)
|
DirectFrame.destroy(self)
|
||||||
|
|
||||||
|
def destroyDialog(self, extra=None):
|
||||||
|
if self.dialog:
|
||||||
|
self.dialog.destroy()
|
||||||
|
self.dialog = None
|
||||||
|
base.cr.playGame.getPlace().setState('walk')
|
||||||
|
|
||||||
def _deleteGeoms(self):
|
def _deleteGeoms(self):
|
||||||
for icon in (self.lQuestIcon, self.rQuestIcon):
|
for icon in (self.lQuestIcon, self.rQuestIcon):
|
||||||
|
@ -153,11 +160,7 @@ class QuestPoster(DirectFrame):
|
||||||
def loadElevator(self, building, numFloors):
|
def loadElevator(self, building, numFloors):
|
||||||
elevatorNodePath = hidden.attachNewNode('elevatorNodePath')
|
elevatorNodePath = hidden.attachNewNode('elevatorNodePath')
|
||||||
elevatorModel = loader.loadModel('phase_4/models/modules/elevator')
|
elevatorModel = loader.loadModel('phase_4/models/modules/elevator')
|
||||||
floorIndicator = [None,
|
floorIndicator = [None] * 5
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None]
|
|
||||||
npc = elevatorModel.findAllMatches('**/floor_light_?;+s')
|
npc = elevatorModel.findAllMatches('**/floor_light_?;+s')
|
||||||
for i in xrange(npc.getNumPaths()):
|
for i in xrange(npc.getNumPaths()):
|
||||||
np = npc.getPath(i)
|
np = npc.getPath(i)
|
||||||
|
@ -174,6 +177,9 @@ class QuestPoster(DirectFrame):
|
||||||
elevatorNodePath.setPosHpr(0, 0, 0, 0, 0, 0)
|
elevatorNodePath.setPosHpr(0, 0, 0, 0, 0, 0)
|
||||||
|
|
||||||
def teleportToShop(self, npcId):
|
def teleportToShop(self, npcId):
|
||||||
|
if base.cr.playGame.getPlace().getState() != 'walk':
|
||||||
|
return
|
||||||
|
|
||||||
npcZone = NPCToons.getNPCZone(npcId)
|
npcZone = NPCToons.getNPCZone(npcId)
|
||||||
npcHood = ZoneUtil.getCanonicalHoodId(npcZone)
|
npcHood = ZoneUtil.getCanonicalHoodId(npcZone)
|
||||||
hqZone = {2000:2520, 1000:1507, 3000:3508, 4000:4504, 5000:5502, 7000:7503, 9000:9505}
|
hqZone = {2000:2520, 1000:1507, 3000:3508, 4000:4504, 5000:5502, 7000:7503, 9000:9505}
|
||||||
|
@ -184,15 +190,32 @@ class QuestPoster(DirectFrame):
|
||||||
zoneId = 2000
|
zoneId = 2000
|
||||||
npcHood = ZoneUtil.getCanonicalHoodId(zoneId)
|
npcHood = ZoneUtil.getCanonicalHoodId(zoneId)
|
||||||
npcZone = hqZone.get(npcHood, 2520)
|
npcZone = hqZone.get(npcHood, 2520)
|
||||||
|
|
||||||
|
cost = ToontownGlobals.getTeleportButtonCost(npcHood)
|
||||||
|
self.destroyDialog()
|
||||||
|
base.cr.playGame.getPlace().setState('stopped')
|
||||||
|
|
||||||
|
if base.localAvatar.getTotalMoney() < cost:
|
||||||
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TeleportButtonNoMoney % cost, command=self.destroyDialog)
|
||||||
|
else:
|
||||||
|
self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.TeleportButtonConfirm % cost, command=lambda value: self.teleportToShopConfirm(npcZone, npcHood, cost, value))
|
||||||
|
|
||||||
base.cr.buildingQueryMgr.d_isSuit(npcZone, lambda isSuit: self.teleportToShopCallback(npcZone, npcHood, isSuit))
|
self.dialog.show()
|
||||||
|
|
||||||
def teleportToShopCallback(self, npcZone, npcHood, flag):
|
def teleportToShopConfirm(self, npcZone, npcHood, cost, value):
|
||||||
|
self.destroyDialog()
|
||||||
|
|
||||||
|
if value > 0:
|
||||||
|
base.cr.buildingQueryMgr.d_isSuit(npcZone, lambda isSuit: self.teleportToShopCallback(npcZone, npcHood, cost, isSuit))
|
||||||
|
|
||||||
|
def teleportToShopCallback(self, npcZone, npcHood, cost, flag):
|
||||||
if flag:
|
if flag:
|
||||||
self.teleportButton.setColorScale(0.3, 0.3, 0.3, 1.0)
|
base.cr.playGame.getPlace().setState('stopped')
|
||||||
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TeleportButtonTakenOver, command=self.destroyDialog)
|
||||||
|
self.dialog.show()
|
||||||
return
|
return
|
||||||
|
|
||||||
self.teleportButton.setColorScale(1.0, 1.0, 1.0, 1.0)
|
base.localAvatar.takeMoney(cost)
|
||||||
base.cr.playGame.getPlace().requestTeleport(npcHood, npcZone, base.localAvatar.defaultShard, -1)
|
base.cr.playGame.getPlace().requestTeleport(npcHood, npcZone, base.localAvatar.defaultShard, -1)
|
||||||
|
|
||||||
def fitGeometry(self, geom, fFlip = 0, dimension = 0.8):
|
def fitGeometry(self, geom, fFlip = 0, dimension = 0.8):
|
||||||
|
@ -228,6 +251,7 @@ class QuestPoster(DirectFrame):
|
||||||
self.rPictureFrame.hide()
|
self.rPictureFrame.hide()
|
||||||
self.questProgress.hide()
|
self.questProgress.hide()
|
||||||
self.teleportButton.hide()
|
self.teleportButton.hide()
|
||||||
|
self.destroyDialog()
|
||||||
if hasattr(self, 'chooseButton'):
|
if hasattr(self, 'chooseButton'):
|
||||||
self.chooseButton.destroy()
|
self.chooseButton.destroy()
|
||||||
del self.chooseButton
|
del self.chooseButton
|
||||||
|
|
|
@ -1258,6 +1258,9 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
|
|
||||||
def getTotalMoney(self):
|
def getTotalMoney(self):
|
||||||
return self.getBankMoney() + self.getMoney()
|
return self.getBankMoney() + self.getMoney()
|
||||||
|
|
||||||
|
def takeMoney(self, money):
|
||||||
|
self.sendUpdate('takeMoney', [money])
|
||||||
|
|
||||||
def setEmblems(self, emblems):
|
def setEmblems(self, emblems):
|
||||||
if self.emblems != emblems:
|
if self.emblems != emblems:
|
||||||
|
|
|
@ -8727,6 +8727,9 @@ ShardPageShardTitle = '%s Population: %s'
|
||||||
ShardPageTeleport = 'Teleport to\n%s'
|
ShardPageTeleport = 'Teleport to\n%s'
|
||||||
|
|
||||||
TeleportButton = 'Teleport'
|
TeleportButton = 'Teleport'
|
||||||
|
TeleportButtonNoMoney = 'Sorry, but you need %s jellybeans to teleport!'
|
||||||
|
TeleportButtonConfirm = 'Would you like to spend %s jellybeans to teleport?'
|
||||||
|
TeleportButtonTakenOver = 'Sorry, but this shop has been taken over by the Cogs!'
|
||||||
|
|
||||||
BattleCogPopup = '\x01androidGreen\x01Group attacks:\x02\n%s\n\n\x01androidGreen\x01Regular attacks:\x02\n%s'
|
BattleCogPopup = '\x01androidGreen\x01Group attacks:\x02\n%s\n\n\x01androidGreen\x01Regular attacks:\x02\n%s'
|
||||||
BattleCogPopupAttack = '%s %s HP'
|
BattleCogPopupAttack = '%s %s HP'
|
||||||
|
|
|
@ -1688,4 +1688,17 @@ TV_OK = 2
|
||||||
COLOR_SATURATION_MIN = 0.5
|
COLOR_SATURATION_MIN = 0.5
|
||||||
COLOR_SATURATION_MAX = 0.8
|
COLOR_SATURATION_MAX = 0.8
|
||||||
COLOR_VALUE_MIN = 0.5
|
COLOR_VALUE_MIN = 0.5
|
||||||
COLOR_VALUE_MAX = 0.8
|
COLOR_VALUE_MAX = 0.8
|
||||||
|
|
||||||
|
TELEPORT_BUTTON_DEFAULT_COST = 50
|
||||||
|
TELEPORT_BUTTON_COSTS = {
|
||||||
|
ToontownCentral: 5,
|
||||||
|
DonaldsDock: 15,
|
||||||
|
DaisyGardens: 30,
|
||||||
|
MinniesMelodyland: 45,
|
||||||
|
TheBrrrgh: 60,
|
||||||
|
DonaldsDreamland: 75
|
||||||
|
}
|
||||||
|
|
||||||
|
def getTeleportButtonCost(hoodId):
|
||||||
|
return TELEPORT_BUTTON_COSTS.get(hoodId, TELEPORT_BUTTON_DEFAULT_COST)
|
Loading…
Reference in a new issue