/** * Is called when an object was removed * @param object object that has been inserted */ int PlayerContainerComponent::notifyObjectRemoved(SceneObject* sceneObject, SceneObject* object, SceneObject* destination) const { CreatureObject* creo = dynamic_cast<CreatureObject*>(sceneObject); if (creo == NULL) { return 0; } if (object->isArmorObject()) { PlayerManager* playerManager = creo->getZoneServer()->getPlayerManager(); playerManager->removeEncumbrancies(creo, cast<ArmorObject*>(object)); } if (object->isTangibleObject()) { TangibleObject* tano = cast<TangibleObject*>(object); tano->removeSkillModsFrom(creo); } if (object->isInstrument()) { if (creo->isPlayingMusic()) creo->stopEntertaining(); } //this it to update the equipment list //we need a DeltaVector with all the slotted objects it seems /*CreatureObjectMessage6* msg6 = new CreatureObjectMessage6(creo); creo->broadcastMessage(msg6, true, true);*/ if (object->isTangibleObject() && object->getArrangementDescriptorSize() != 0 && object->getArrangementDescriptor(0)->size() != 0) { const String& arrangement = object->getArrangementDescriptor(0)->get(0); //CHK if (arrangement != "mission_bag" && arrangement != "ghost" && arrangement != "bank") { creo->removeWearableObject(object->asTangibleObject(), true); } } if (object->isTangibleObject()) { ManagedReference<TangibleObject*> tano = object->asTangibleObject(); tano->removeTemplateSkillMods(creo); } // Jedi stuff below. PlayerObject* ghost = creo->getPlayerObject(); if (ghost && ghost->isJedi()) { if (object->isRobeObject()) { ghost->recalculateForcePower(); } } return ContainerComponent::notifyObjectRemoved(sceneObject, object, destination); }
void EntertainingSessionImplementation::sendEntertainmentUpdate(CreatureObject* creature, uint64 entid, const String& mood, bool updateEntValue) { CreatureObject* entertainer = this->entertainer.get(); if (entertainer != NULL) { if (entertainer->isPlayingMusic()) { creature->setListenToID(entid, true); } else if (entertainer->isDancing()) { creature->setWatchToID(entid); } } /*if (updateEntValue) creature->setTerrainNegotiation(0.8025000095f, true);*/ String str = Races::getMoodStr(mood); creature->setMoodString(str, true); }
/** * Is called when an object was removed * @param object object that has been inserted */ int PlayerContainerComponent::notifyObjectRemoved(SceneObject* sceneObject, SceneObject* object, SceneObject* destination) { CreatureObject* creo = dynamic_cast<CreatureObject*>(sceneObject); if (object->isArmorObject()) { PlayerManager* playerManager = creo->getZoneServer()->getPlayerManager(); playerManager->removeEncumbrancies(creo, cast<ArmorObject*>(object)); } if (object->isTangibleObject()) { TangibleObject* tano = cast<TangibleObject*>(object); tano->removeSkillModsFrom(creo); } if (object->isInstrument()) { if (creo->isPlayingMusic()) creo->stopEntertaining(); } if (creo->getPlayerObject().get() != NULL && creo->getPlayerObject()->isJedi()) { if ((object->isRobeObject() && cast<RobeObject*>( object)->getSkillRequired() != "") || (object->isWeaponObject() && cast<WeaponObject*>(object)->isJediWeapon())) VisibilityManager::instance()->increaseVisibility(creo); } //this it to update the equipment list //we need a DeltaVector with all the slotted objects it seems /*CreatureObjectMessage6* msg6 = new CreatureObjectMessage6(creo); creo->broadcastMessage(msg6, true, true);*/ if (object->isTangibleObject() && object->getArrangementDescriptorSize() != 0 && object->getArrangementDescriptor(0).size() != 0) { String arrangement = object->getArrangementDescriptor(0).get(0); //CHK if (arrangement != "mission_bag" && arrangement != "ghost" && arrangement != "bank") { creo->removeWearableObject(cast<TangibleObject*>(object), true); } } if (creo != NULL && object->isTangibleObject()) { ManagedReference<TangibleObject*> tano = cast<TangibleObject*>(object); tano->removeTemplateSkillMods(creo); } return ContainerComponent::notifyObjectRemoved(sceneObject, object, destination); }