int VetHarvesterDeedImplementation::useObject(CreatureObject* creature) { ManagedReference<PlayerObject*> ghost = creature->getPlayerObject(); ZoneServer *zone = creature->getZoneServer(); if(ghost == NULL || zone == NULL) return 0; if (!isASubChildOf(creature)) return 0; uint64 targetID = creature->getTargetID(); ManagedReference<TangibleObject*> targetObject = zone->getObject(targetID).castTo<TangibleObject*>(); if (targetObject == NULL || !targetObject->isHarvesterObject()) return 0; HarvesterObject *harvester = targetObject.castTo<HarvesterObject*>(); if(harvester == NULL || !harvester->isOwnerOf(creature)) return 0; if(harvester->isSelfPowered()) { creature->sendSystemMessage("@veteran:harvester_already_selfpowered"); return 0; } StringIdChatParameter messageBody("veteran", "harvester_converted"); // Your harvester %TT has been converted to use 0 power. messageBody.setTT(harvester); ManagedReference<ChatManager*> cman = zone->getChatManager(); cman->sendMail("system", "@veteran:harvester_converted_subject", messageBody, creature->getFirstName()); EXECUTE_TASK_1(harvester, { Locker locker(harvester_p); harvester_p->setSelfPowered(true); });
int LuaAiAgent::spatialChat(lua_State* L) { ZoneServer* zoneServer = ServerCore::getZoneServer(); if (zoneServer == NULL) return 0; ChatManager* chatManager = zoneServer->getChatManager(); if (lua_islightuserdata(L, -1)) { StringIdChatParameter* message = (StringIdChatParameter*)lua_touserdata(L, -1); if (realObject != NULL && message != NULL) { chatManager->broadcastMessage(realObject, *message, 0, 0, 0); } } else { String message = lua_tostring(L, -1); if (realObject != NULL) { chatManager->broadcastMessage(realObject, message, 0, 0, 0); } } 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; }