void SuiManager::sendMessageBox(SceneObject* usingObject, SceneObject* player, const String& title, const String& text, const String& okButton, const String& screenplay, const String& callback) { if (usingObject == NULL) return; if (player == NULL || !player->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(player); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiMessageBox*> messageBox = new SuiMessageBox(creature, 0x00); messageBox->setCallback(new LuaSuiCallback(creature->getZoneServer(), screenplay, callback)); messageBox->setPromptTitle(title); messageBox->setPromptText(text); messageBox->setUsingObject(usingObject); messageBox->setOkButton(true, okButton); messageBox->setCancelButton(true, "@cancel"); messageBox->setForceCloseDistance(32.f); creature->sendMessage(messageBox->generateMessage()); playerObject->addSuiBox(messageBox); } }
int BountyMissionObjectiveImplementation::handleNpcTargetReceivesDamage(ManagedObject* arg1) { CreatureObject* target = NULL; target = cast<CreatureObject*>(arg1); ManagedReference<MissionObject* > mission = this->mission.get(); ManagedReference<CreatureObject*> owner = getPlayerOwner(); if (owner != NULL && target != NULL && target->getFirstName() == owner->getFirstName() && target->isPlayerCreature() && objectiveStatus == HASBIOSIGNATURESTATUS) { updateMissionStatus(mission->getMissionLevel()); String diffString = "easy"; if (mission->getMissionLevel() == 3) { diffString = "hard"; } else if (mission->getMissionLevel() == 2) { diffString = "medium"; } target->getZoneServer()->getChatManager()->broadcastMessage(npcTarget, "@mission/mission_bounty_neutral_" + diffString + ":m" + String::valueOf(mission->getMissionNumber()) + "v", 0, 0, 0); return 1; } return 0; }
void SuiManager::sendInputBox(SceneObject* terminal, SceneObject* player, const String& play, const String& callback, const String& prompt, const String& button) { if (terminal == NULL) return; if (player == NULL || !player->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(player); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiInputBox*> confirmSui = new SuiInputBox(creature, 0x00); confirmSui->setCallback(new LuaSuiCallback(creature->getZoneServer(), play, callback)); confirmSui->setUsingObject(terminal); confirmSui->setPromptText(prompt); confirmSui->setOkButton(true, button); confirmSui->setOtherButton(false, ""); confirmSui->setCancelButton(false, ""); confirmSui->setForceCloseDistance(32); creature->sendMessage(confirmSui->generateMessage()); playerObject->addSuiBox(confirmSui); } }
void SuiManager::sendListBox(SceneObject* usingObject, SceneObject* player, const String& title, const String& text, const uint8& numOfButtons, const String& cancelButton, const String& otherButton, const String& okButton, LuaObject& options, const String& screenplay, const String& callback) { if (usingObject == NULL) return; if (player == NULL || !player->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(player); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiListBox*> box = NULL; switch (numOfButtons) { case 1: box = new SuiListBox(creature, 0x00, SuiListBox::HANDLESINGLEBUTTON); box->setCancelButton(false, ""); box->setOtherButton(false, ""); box->setOkButton(true, okButton); break; case 2: box = new SuiListBox(creature, 0x00, SuiListBox::HANDLETWOBUTTON); box->setCancelButton(true, cancelButton); box->setOtherButton(false, ""); box->setOkButton(true, okButton); break; case 3: box = new SuiListBox(creature, 0x00, SuiListBox::HANDLETHREEBUTTON); box->setCancelButton(true, cancelButton); box->setOtherButton(true, otherButton); box->setOkButton(true, okButton); break; default: return; break; } if(options.isValidTable()){ for(int i = 1; i <= options.getTableSize(); ++i){ String optionString = options.getStringAt(i); box->addMenuItem(optionString); } options.pop(); } box->setCallback(new LuaSuiCallback(creature->getZoneServer(), screenplay, callback)); box->setPromptTitle(title); box->setPromptText(text); box->setUsingObject(usingObject); box->setForceCloseDistance(32.f); creature->sendMessage(box->generateMessage()); playerObject->addSuiBox(box); } }
/** * 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 SuiManager::sendTransferBox(SceneObject* usingObject, SceneObject* player, const String& title, const String& text, LuaObject& optionsAddFrom, LuaObject& optionsAddTo, const String& screenplay, const String& callback) { if (usingObject == NULL) return; if (player == NULL || !player->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(player); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiTransferBox*> box = NULL; box = new SuiTransferBox(creature, 0x00); if(optionsAddFrom.isValidTable()){ String optionAddFromTextString = optionsAddFrom.getStringAt(1); String optionAddFromStartingString = optionsAddFrom.getStringAt(2); String optionAddFromRatioString = optionsAddFrom.getStringAt(3); box->addFrom(optionAddFromTextString, optionAddFromStartingString, optionAddFromStartingString, optionAddFromRatioString); optionsAddFrom.pop(); } if(optionsAddTo.isValidTable()){ String optionAddToTextString = optionsAddTo.getStringAt(1); String optionAddToStartingString = optionsAddTo.getStringAt(2); String optionAddToRatioString = optionsAddTo.getStringAt(3); box->addTo(optionAddToTextString, optionAddToStartingString, optionAddToStartingString, optionAddToRatioString); optionsAddTo.pop(); } box->setCallback(new LuaSuiCallback(creature->getZoneServer(), screenplay, callback)); box->setPromptTitle(title); box->setPromptText(text); box->setUsingObject(usingObject); box->setForceCloseDistance(32.f); creature->sendMessage(box->generateMessage()); playerObject->addSuiBox(box); } }
/** * 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); }
void SuiManager::sendKeypadSui(SceneObject* keypad, SceneObject* creatureSceneObject, const String& play, const String& callback) { if (keypad == NULL) return; if (creatureSceneObject == NULL || !creatureSceneObject->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(creatureSceneObject); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiKeypadBox*> keypadSui = new SuiKeypadBox(creature, 0x00); keypadSui->setCallback(new LuaSuiCallback(creature->getZoneServer(), play, callback)); keypadSui->setUsingObject(keypad); keypadSui->setForceCloseDisabled(); creature->sendMessage(keypadSui->generateMessage()); playerObject->addSuiBox(keypadSui); } }
int DestroyStructureSessionImplementation::sendDestroyCode() { //TODO: Temporary until CreatureObject* dependency removed. if (!creatureObject->isPlayerCreature()) return cancelSession(); Locker structureLock(structureObject); Locker _lock(creatureObject, structureObject); CreatureObject* player = cast<CreatureObject*>( creatureObject.get()); destroyCode = System::random(899999) + 100000; String no = "\\#FF6347 @player_structure:will_not_redeed_confirm \\#."; String yes = "\\#32CD32 @player_structure:will_redeed_confirm \\#."; String redeed = (structureObject->isRedeedable()) ? yes : no; StringBuffer entry; entry << "@player_structure:your_structure_prefix "; entry << redeed << " @player_structure:will_redeed_suffix \n\n"; entry << "Code: " << destroyCode; ManagedReference<SuiInputBox*> sui = new SuiInputBox(player); sui->setCallback(new DestroyStructureCodeSuiCallback(player->getZoneServer())); sui->setUsingObject(structureObject); sui->setPromptTitle("@player_structure:confirm_destruction_t"); //Confirm Structure Deletion sui->setPromptText(entry.toString()); sui->setCancelButton(true, "@cancel"); sui->setMaxInputSize(6); player->getPlayerObject()->addSuiBox(sui); player->sendMessage(sui->generateMessage()); return 0; }
bool FactionRecruiterContainerComponent::transferObject(SceneObject* sceneObject, SceneObject* object, int containmentType, bool notifyClient, bool allowOverflow) { CoaMessageDataComponent* data = object->getDataObjectComponent()->castTo<CoaMessageDataComponent*>(); if (data == NULL) { return false; } CreatureObject* player = object->getParentRecursively(SceneObjectType::PLAYERCREATURE).get().castTo<CreatureObject*>(); if (player == NULL) { return false; } ZoneServer* zoneServer = player->getZoneServer(); PlayerObject* ghost = player->getPlayerObject(); if (zoneServer == NULL || ghost == NULL) { return false; } if (!sceneObject->isAiAgent()) { return false; } AiAgent* recruiter = cast<AiAgent*>(sceneObject); String recruiterFaction = recruiter->getFactionString().toLowerCase(); bool hasBadge = ghost->hasBadge(Badge::EVENT_PROJECT_DEAD_EYE_1); String faction = data->getFaction().toLowerCase(); StringBuffer response; response << "@encoded_disk/message_fragment:response_event"; if (faction == "rebel") { response << "reb1_"; } else if (faction == "imperial") { response << "imp1_"; } response << recruiterFaction; ChatManager* chatManager = zoneServer->getChatManager(); if (chatManager == NULL) { return false; } Locker locker(recruiter); chatManager->broadcastMessage(recruiter,response.toString(), 0, 0, 0); object->destroyObjectFromWorld(true); object->destroyObjectFromDatabase(); int credits = System::random(500) + 500; player->sendSystemMessage("You receive " + String::valueOf(credits) + " credits."); player->addCashCredits(credits, true); if (!hasBadge) { ghost->awardBadge(Badge::EVENT_PROJECT_DEAD_EYE_1); ghost->increaseFactionStanding(recruiterFaction, 500); } return true; }