From 064e733cbac21d4a8e828fa5f0fc98a924a096ec Mon Sep 17 00:00:00 2001 From: Seefo Date: Wed, 23 Apr 2014 00:11:26 -0400 Subject: [PATCH] Fixed vehicle passenger stuff --- .../object/mobile/vehicle/landspeeder_av21.py | 2 ++ .../vehicle_deed/landspeeder_av21_deed.py | 5 +++++ scripts/radial/creature/vehicle.py | 9 ++++---- src/services/pet/MountService.java | 21 ++++++++++++++++--- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/scripts/object/mobile/vehicle/landspeeder_av21.py b/scripts/object/mobile/vehicle/landspeeder_av21.py index ccad8904..0f6896cd 100644 --- a/scripts/object/mobile/vehicle/landspeeder_av21.py +++ b/scripts/object/mobile/vehicle/landspeeder_av21.py @@ -1,4 +1,6 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'creature/vehicle') + object.setAttachment('passengers', 0) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/vehicle_deed/landspeeder_av21_deed.py b/scripts/object/tangible/deed/vehicle_deed/landspeeder_av21_deed.py index ccad8904..a5677b55 100644 --- a/scripts/object/tangible/deed/vehicle_deed/landspeeder_av21_deed.py +++ b/scripts/object/tangible/deed/vehicle_deed/landspeeder_av21_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'deeds/vehicleDeed') + return + +def use(core, actor, object): + core.mountService.generateVehicle(actor, object, 'object/mobile/vehicle/shared_landspeeder_av21.iff', 'object/intangible/vehicle/shared_landspeeder_av21_pcd.iff') return \ No newline at end of file diff --git a/scripts/radial/creature/vehicle.py b/scripts/radial/creature/vehicle.py index 5935709d..5106c8ee 100644 --- a/scripts/radial/creature/vehicle.py +++ b/scripts/radial/creature/vehicle.py @@ -6,8 +6,7 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(0, 7, 1, '')) if core.mountService.canMount(owner, target): - radials.add(RadialOptions(1, 40, 3, '@pet/pet_menu:menu_enter_exit')) - radials.add(RadialOptions(0, 21, 1, '')) + radials.add(RadialOptions(0, 40, 3, '@pet/pet_menu:menu_enter_exit')) if target.getOwnerId() == owner.getObjectID(): radials.add(RadialOptions(0, 60, 3, '@pet/pet_menu:menu_store')) if core.mountService.canRepair(owner, target): @@ -18,11 +17,11 @@ def handleSelection(core, owner, target, option): mntSvc = core.mountService if target: - if option == 21: + if option == 40: if mntSvc.isMounted(owner): - mntSvc.mount(owner, target) + mntSvc.dismount(owner, target) else: - mntSvc.unmount(owner, target) + mntSvc.mount(owner, target) elif option == 60: mntSvc.store(owner, target) elif option == 114: diff --git a/src/services/pet/MountService.java b/src/services/pet/MountService.java index a35c8551..8b5eb59c 100644 --- a/src/services/pet/MountService.java +++ b/src/services/pet/MountService.java @@ -529,13 +529,28 @@ public class MountService implements INetworkDispatch { return actor.getContainer() == mount; } + public int getPassengerCount(CreatureObject mount) + { + mount.setAttachment("passengers", 0); + + mount.viewChildren(mount, false, false, new Traverser() + { + public void process(SWGObject passenger) + { + if (passenger instanceof CreatureObject) mount.setAttachment("passengers", (int) mount.getAttachment("passengers") + 1); + } + }); + + return (int)mount.getAttachment("passengers"); + } + public boolean canMount(CreatureObject rider, CreatureObject mount) { if (mount == null) { return false; } if (!mount.getOption(Options.MOUNT)) { - return false; + // return false; } if (isMounted(rider)) { @@ -556,7 +571,7 @@ public class MountService implements INetworkDispatch { int passengers = 0; if (mount.getAttachment("passengers") != null){ - passengers = (Integer) mount.getAttachment("passengers"); + passengers = getPassengerCount(mount); } int passengerSlot = 0; @@ -569,7 +584,7 @@ public class MountService implements INetworkDispatch { } if (passengerSlot == 0) { - return false; + // return false; } CreatureObject owner = (CreatureObject) NGECore.getInstance().objectService.getObject(mount.getOwnerId());