short PetManagerImplementation::checkMountEligibility(PetControlDevice* petControlDevice, float height) { ManagedReference<TangibleObject*> controlledObject = petControlDevice->getControlledObject(); if (controlledObject == NULL || !controlledObject->isAiAgent()) return PetManager::INVALIDCREATURE; ManagedReference<AiAgent*> pet = cast<AiAgent*>(controlledObject.get()); if( pet == NULL ) return PetManager::INVALIDCREATURE; //Check if the pet's species is able to be trained as a mount if (!pet->hasSlotDescriptor("rider")) return PetManager::INVALIDCREATURE; SharedObjectTemplate* objectTemplate = petControlDevice->getObjectTemplate(); if (objectTemplate == NULL) return PetManager::INVALIDCREATURE; short result; if (height == -1) result = isValidMountScale(objectTemplate->getAppearanceFilename(), 1, pet->getHeight()); else result = isValidMountScale(objectTemplate->getAppearanceFilename(), 1, height); return result; }
float PetManagerImplementation::getMountedRunSpeed(CreatureObject* mount) { if (!mount->isMount()) return mount->getRunSpeed(); ManagedReference<PetControlDevice*> pcd = mount->getControlDevice().get().castTo<PetControlDevice*>(); if (pcd != NULL) { SharedObjectTemplate* objectTemplate = pcd->getObjectTemplate(); if (objectTemplate != NULL) { MountSpeedData* mountSpeedData = getMountSpeedData(objectTemplate->getAppearanceFilename()); if (mountSpeedData != NULL) return mountSpeedData->getRunSpeed(); } } return mount->getRunSpeed(); }