void WeaponObjectImplementation::createChildObjects() { // Create any child objects in a weapon. ZoneServer* zoneServer = server->getZoneServer(); for (int i = 0; i < templateObject->getChildObjectsSize(); ++i) { ChildObject* child = templateObject->getChildObject(i); if (child == NULL) continue; ManagedReference<SceneObject*> obj = zoneServer->createObject( child->getTemplateFile().hashCode(), getPersistenceLevel()); if (obj == NULL) continue; ContainerPermissions* permissions = obj->getContainerPermissions(); permissions->setOwner(getObjectID()); permissions->setInheritPermissionsFromParent(true); permissions->setDefaultDenyPermission(ContainerPermissions::MOVECONTAINER); permissions->setDenyPermission("owner", ContainerPermissions::MOVECONTAINER); if (!transferObject(obj, child->getContainmentType())) { obj->destroyObjectFromDatabase(true); continue; } childObjects.put(obj); obj->initializeChildObject(_this.getReferenceUnsafeStaticCast()); } }
void ShipControlDeviceImplementation::storeObject(CreatureObject* player, bool force) { player->clearState(CreatureState::PILOTINGSHIP); ManagedReference<TangibleObject*> controlledObject = this->controlledObject.get(); if (controlledObject == NULL) return; Locker clocker(controlledObject, player); if (!controlledObject->isInQuadTree()) return; Zone* zone = player->getZone(); if (zone == NULL) return; zone->transferObject(player, -1, false); controlledObject->destroyObjectFromWorld(true); transferObject(controlledObject, 4, true); updateStatus(0); }
void InstallationObjectImplementation::createChildObjects(){ if( isTurret()) { SharedInstallationObjectTemplate* inso = dynamic_cast<SharedInstallationObjectTemplate*>(getObjectTemplate()); if(inso != NULL){ uint32 defaultWeaponCRC = inso->getWeapon().hashCode(); if(getZoneServer() != NULL) { Reference<WeaponObject*> defaultWeapon = (getZoneServer()->createObject(defaultWeaponCRC, 1)).castTo<WeaponObject*>(); if (defaultWeapon == NULL) { return; } else { if (!transferObject(defaultWeapon, 4)) { defaultWeapon->destroyObjectFromDatabase(true); return; } if(dataObjectComponent != NULL){ TurretDataComponent* turretData = cast<TurretDataComponent*>(dataObjectComponent.get()); if(turretData != NULL) { turretData->setWeapon(defaultWeapon); } } } } } } else if (isMinefield()){ this->setContainerDefaultAllowPermission(ContainerPermissions::MOVEIN); this->setContainerDefaultDenyPermission(ContainerPermissions::MOVEOUT); this->setContainerDefaultAllowPermission(ContainerPermissions::OPEN); } else { StructureObjectImplementation::createChildObjects(); } }