aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llviewermessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llviewermessage.cpp')
-rw-r--r--linden/indra/newview/llviewermessage.cpp185
1 files changed, 165 insertions, 20 deletions
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 7f2504c..af4b8d8 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -151,17 +151,17 @@
151#include "llwindebug.h" // For the invalid message handler 151#include "llwindebug.h" // For the invalid message handler
152#endif 152#endif
153 153
154// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
155#include "llfloateravatarinfo.h"
156extern LLMap< const LLUUID, LLFloaterAvatarInfo* > gAvatarInfoInstances; // Only defined in llfloateravatarinfo.cpp
157// [/RLVa:KB]
158
159//silly spam define D: 154//silly spam define D:
160bool dialogSpamOn; 155bool dialogSpamOn;
161static LLFrameTimer d_spam; 156static LLFrameTimer d_spam;
162std::map< std::string , S32 > lastd_names; 157std::map< std::string , S32 > lastd_names;
163LLDynamicArray< std::string > blacklisted_names; 158LLDynamicArray< std::string > blacklisted_names;
164 159
160// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
161#include "llfloateravatarinfo.h"
162extern LLMap< const LLUUID, LLFloaterAvatarInfo* > gAvatarInfoInstances; // Only defined in llfloateravatarinfo.cpp
163// [/RLVa:KB]
164
165// 165//
166// Constants 166// Constants
167// 167//
@@ -1116,8 +1116,17 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
1116 std::string first_name, last_name; 1116 std::string first_name, last_name;
1117 if (gCacheName->getName(mFromID, first_name, last_name)) 1117 if (gCacheName->getName(mFromID, first_name, last_name))
1118 { 1118 {
1119 from_string = std::string("An object named '") + mFromName + "' owned by " + first_name + " " + last_name; 1119// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
1120 chatHistory_string = mFromName + " owned by " + first_name + " " + last_name; 1120 std::string full_name = first_name + " " + last_name;
1121 if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(mFromID)) )
1122 {
1123 full_name = gRlvHandler.getAnonym(full_name);
1124 }
1125 from_string = std::string("An object named '") + mFromName + "' owned by " + full_name;
1126 chatHistory_string = mFromName + " owned by " + full_name;
1127// [/RLVa:KB]
1128 //from_string = std::string("An object named '") + mFromName + "' owned by " + first_name + " " + last_name;
1129 //chatHistory_string = mFromName + " owned by " + first_name + " " + last_name;
1121 } 1130 }
1122 else 1131 else
1123 { 1132 {
@@ -1136,6 +1145,21 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
1136 switch(button) 1145 switch(button)
1137 { 1146 {
1138 case IOR_ACCEPT: 1147 case IOR_ACCEPT:
1148// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-0.2.2a
1149 // Only change the inventory offer's destination folder to the shared root if:
1150 // - the user has enabled the feature
1151 // - the inventory offer came from a script (and specifies a folder)
1152 // - the name starts with the prefix [mDesc format (quotes are part of the string): "[OBJECTNAME] ( http://slurl.com/... )"]
1153 if ( (rlv_handler_t::isEnabled()) && (!RlvSettings::getForbidGiveToRLV()) &&
1154 (IM_TASK_INVENTORY_OFFERED == mIM) && (LLAssetType::AT_CATEGORY == mType) && (mDesc.find(RLV_PUTINV_PREFIX) == 1) )
1155 {
1156 LLViewerInventoryCategory* pRlvRoot = gRlvHandler.getSharedRoot();
1157 if (pRlvRoot)
1158 {
1159 mFolderID = pRlvRoot->getUUID();
1160 }
1161 }
1162// [/RLVa:KB]
1139 // ACCEPT. The math for the dialog works, because the accept 1163 // ACCEPT. The math for the dialog works, because the accept
1140 // for inventory_offered, task_inventory_offer or 1164 // for inventory_offered, task_inventory_offer or
1141 // group_notice_inventory is 1 greater than the offer integer value. 1165 // group_notice_inventory is 1 greater than the offer integer value.
@@ -1303,7 +1327,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
1303 if(indx >= 0) 1327 if(indx >= 0)
1304 { 1328 {
1305 LLStringUtil::truncate(msg, indx); 1329 LLStringUtil::truncate(msg, indx);
1306// [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-04 (RLVa-1.0.0a) | Added: RLVa-1.0.0a 1330// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) | Added: RLVa-1.0.0a
1307 // TODO-RLVa: needs revisiting when LL saves open notifications to disk to accept them on the next relog 1331 // TODO-RLVa: needs revisiting when LL saves open notifications to disk to accept them on the next relog
1308 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) 1332 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
1309 { 1333 {
@@ -1352,6 +1376,13 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
1352 std::string first_name, last_name; 1376 std::string first_name, last_name;
1353 if (gCacheName->getName(info->mFromID, first_name, last_name)) 1377 if (gCacheName->getName(info->mFromID, first_name, last_name))
1354 { 1378 {
1379// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
1380 if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) )
1381 {
1382 first_name = gRlvHandler.getAnonym(first_name.append(" ").append(last_name));
1383 last_name.clear();
1384 }
1385// [/RLVa:KB]
1355 args["FIRST"] = first_name; 1386 args["FIRST"] = first_name;
1356 args["LAST"] = last_name; 1387 args["LAST"] = last_name;
1357 name_found = TRUE; 1388 name_found = TRUE;
@@ -1371,6 +1402,12 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
1371 } 1402 }
1372 else 1403 else
1373 { 1404 {
1405// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
1406 if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) )
1407 {
1408 args["NAME"] = gRlvHandler.getAnonym(info->mFromName);
1409 }
1410// [/RLVa:KB]
1374 p.name = "UserGiveItem"; 1411 p.name = "UserGiveItem";
1375 } 1412 }
1376 1413
@@ -1628,11 +1665,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1628 to_id.isNull() ) 1665 to_id.isNull() )
1629 do_auto_response = false; 1666 do_auto_response = false;
1630 1667
1631 // if( do_auto_response ) 1668// if( do_auto_response )
1632 // [RLVa:KB] - Alternate: Emerald-370 1669// [RLVa:KB] - Alternate: Emerald-370
1633 // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception 1670 // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception
1634 if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) ) 1671 if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) )
1635 // [/RLVa:KB] 1672// [/RLVa:KB]
1636 { 1673 {
1637 if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) || 1674 if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) ||
1638 (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping")) 1675 (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping"))
@@ -1860,7 +1897,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1860 } 1897 }
1861 else if (to_id.isNull()) 1898 else if (to_id.isNull())
1862 { 1899 {
1863// [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) 1900// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
1864 // Filter region messages that weren't sent by a Linden 1901 // Filter region messages that weren't sent by a Linden
1865 if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) && 1902 if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) &&
1866 (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) ) 1903 (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) )
@@ -2160,6 +2197,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2160 } 2197 }
2161 else 2198 else
2162 { 2199 {
2200// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-09-10 (RLVa-1.0.3a)
2201 if ( (rlv_handler_t::isEnabled()) && (dialog == IM_TASK_INVENTORY_OFFERED) &&
2202 (info->mDesc.find(RLV_PUTINV_PREFIX) == 1) && (gRlvHandler.getSharedRoot()) )
2203 {
2204 LLFirstUse::warnRlvGiveToRLV();
2205 }
2206// [/RLVa:KB]
2207
2163 inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED); 2208 inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED);
2164 } 2209 }
2165 } 2210 }
@@ -2167,13 +2212,23 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2167 2212
2168 case IM_INVENTORY_ACCEPTED: 2213 case IM_INVENTORY_ACCEPTED:
2169 { 2214 {
2170 args["NAME"] = name; 2215// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b
2216 bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
2217 (gRlvHandler.isAgentNearby(from_id)) && (!gAvatarInfoInstances.checkData(from_id));
2218 args["NAME"] = (!fRlvObfuscate) ? name : gRlvHandler.getAnonym(name);
2219// [/RLVa:KB]
2220 //args["NAME"] = name;
2171 LLNotifications::instance().add("InventoryAccepted", args); 2221 LLNotifications::instance().add("InventoryAccepted", args);
2172 break; 2222 break;
2173 } 2223 }
2174 case IM_INVENTORY_DECLINED: 2224 case IM_INVENTORY_DECLINED:
2175 { 2225 {
2176 args["NAME"] = name; 2226// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b
2227 bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) &&
2228 (gRlvHandler.isAgentNearby(from_id)) && (!gAvatarInfoInstances.checkData(from_id));
2229 args["NAME"] = (!fRlvObfuscate) ? name : gRlvHandler.getAnonym(name);
2230// [/RLVa:KB]
2231 //args["NAME"] = name;
2177 LLNotifications::instance().add("InventoryDeclined", args); 2232 LLNotifications::instance().add("InventoryDeclined", args);
2178 break; 2233 break;
2179 } 2234 }
@@ -2324,7 +2379,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2324 return; 2379 return;
2325 } 2380 }
2326 { 2381 {
2327// [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) 2382// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
2328 // TODO-RLVa: what actually generates this? 2383 // TODO-RLVa: what actually generates this?
2329 if (rlv_handler_t::isEnabled()) 2384 if (rlv_handler_t::isEnabled())
2330 { 2385 {
@@ -2367,6 +2422,27 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2367 } 2422 }
2368 else 2423 else
2369 { 2424 {
2425// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d)
2426 if (rlv_handler_t::isEnabled())
2427 {
2428 // Disallow if: 1) @tplure=n restricted (sender isn't an exception), or 2) @unsit=n restricted and currently sitting
2429 LLVOAvatar* pAvatar = gAgent.getAvatarObject();
2430 if ( ( (gRlvHandler.hasBehaviour(RLV_BHVR_TPLURE)) && (!gRlvHandler.isException(RLV_BHVR_TPLURE, from_id)) ) ||
2431 ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (pAvatar) && (pAvatar->mIsSitting) ) )
2432 {
2433 rlvSendBusyMessage(from_id, rlv_handler_t::cstrMsgTpLure);
2434 return;
2435 }
2436
2437 // Censor teleport message if: 1) @revcim=n restricted (sender isn't an exception), or 2) @showloc=n restricted
2438 if ( ( (gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) && (!gRlvHandler.isException(RLV_BHVR_RECVIM, from_id)) ) ||
2439 (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) )
2440 {
2441 message = rlv_handler_t::cstrHidden;
2442 }
2443 }
2444// [/RLVa:KB]
2445
2370 LLSD args; 2446 LLSD args;
2371 // *TODO:translate -> [FIRST] [LAST] (maybe) 2447 // *TODO:translate -> [FIRST] [LAST] (maybe)
2372 args["NAME"] = name; 2448 args["NAME"] = name;
@@ -2375,7 +2451,21 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2375 payload["from_id"] = from_id; 2451 payload["from_id"] = from_id;
2376 payload["lure_id"] = session_id; 2452 payload["lure_id"] = session_id;
2377 payload["godlike"] = FALSE; 2453 payload["godlike"] = FALSE;
2378 LLNotifications::instance().add("TeleportOffered", args, payload); 2454 //LLNotifications::instance().add("TeleportOffered", args, payload);
2455
2456// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d) | Modified: RLVa-0.2.0b
2457 if ( (rlv_handler_t::isEnabled()) &&
2458 ((gRlvHandler.hasBehaviour(RLV_BHVR_ACCEPTTP)) || (gRlvHandler.isException(RLV_BHVR_ACCEPTTP, from_id))) )
2459 {
2460 gRlvHandler.setCanCancelTp(false);
2461 LLNotifications::instance().forceResponse(LLNotification::Params("TeleportOffered").payload(payload), 0);
2462 }
2463 else
2464 {
2465 LLNotifications::instance().add("TeleportOffered", args, payload);
2466 }
2467// [/RLVa:KB]
2468 //LLNotifications::instance().add("TeleportOffered", args, payload);
2379 } 2469 }
2380 } 2470 }
2381 break; 2471 break;
@@ -2657,8 +2747,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
2657 // Make swirly things only for talking objects. (not script debug messages, though) 2747 // Make swirly things only for talking objects. (not script debug messages, though)
2658// if (chat.mSourceType == CHAT_SOURCE_OBJECT 2748// if (chat.mSourceType == CHAT_SOURCE_OBJECT
2659// && chat.mChatType != CHAT_TYPE_DEBUG_MSG) 2749// && chat.mChatType != CHAT_TYPE_DEBUG_MSG)
2660// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) 2750// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g)
2661 // Don't show swirly things for llOwnerSay() chat here because we handle those further down 2751 // Don't show swirly things for llOwnerSay() chat here because we handle those further down
2752 // RELEASE-RLVa: if this code changes, remember to change the code down below as well
2662 if ( (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) && 2753 if ( (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) &&
2663 ((!rlv_handler_t::isEnabled()) || (CHAT_TYPE_OWNER != chat.mChatType)) ) 2754 ((!rlv_handler_t::isEnabled()) || (CHAT_TYPE_OWNER != chat.mChatType)) )
2664// [/RLVa:KB] 2755// [/RLVa:KB]
@@ -2985,7 +3076,7 @@ void process_teleport_start(LLMessageSystem *msg, void**)
2985 U32 teleport_flags = 0x0; 3076 U32 teleport_flags = 0x0;
2986 msg->getU32("Info", "TeleportFlags", teleport_flags); 3077 msg->getU32("Info", "TeleportFlags", teleport_flags);
2987 3078
2988 //if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) 3079// if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL)
2989// [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b 3080// [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b
2990 if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) ) 3081 if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) )
2991// [/RLVa:KB] 3082// [/RLVa:KB]
@@ -5365,8 +5456,32 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
5365 payload["object_name"] = object_name; 5456 payload["object_name"] = object_name;
5366 payload["owner_name"] = owner_name; 5457 payload["owner_name"] = owner_name;
5367 5458
5459// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0e
5460 S32 rlvQuestionsOther = questions;
5461
5462 if ( (rlv_handler_t::isEnabled()) && (gRlvHandler.hasBehaviour(RLV_BHVR_ACCEPTPERMISSION)) )
5463 {
5464 LLViewerObject* pObj = gObjectList.findObject(taskid);
5465 if (pObj)
5466 {
5467 if (pObj->permYouOwner())
5468 {
5469 // PERMISSION_TAKE_CONTROLS and PERMISSION_ATTACH are only auto-granted to objects this avie owns
5470 rlvQuestionsOther &= ~(LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_TAKE_CONTROLS] |
5471 LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_ATTACH]);
5472 }
5473 }
5474 }
5475
5476 if ( (!caution) && (!rlvQuestionsOther) )
5477 {
5478 LLNotifications::instance().forceResponse(
5479 LLNotification::Params("ScriptQuestion").substitutions(args).payload(payload), 0/*YES*/);
5480 }
5481 else if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
5482// [/RLVa:KB]
5368 // check whether cautions are even enabled or not 5483 // check whether cautions are even enabled or not
5369 if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) 5484 //if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
5370 { 5485 {
5371 // display the caution permissions prompt 5486 // display the caution permissions prompt
5372 LLNotifications::instance().add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload); 5487 LLNotifications::instance().add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload);
@@ -5697,6 +5812,21 @@ bool handle_lure_callback(const LLSD& notification, const LLSD& response)
5697 5812
5698 if(0 == option) 5813 if(0 == option)
5699 { 5814 {
5815// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0b
5816 if (gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM))
5817 {
5818 for (LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray();
5819 it != notification["payload"]["ids"].endArray(); ++it)
5820 {
5821 if (!gRlvHandler.isException(RLV_BHVR_SENDIM, it->asUUID()))
5822 {
5823 text = rlv_handler_t::cstrHidden;
5824 break;
5825 }
5826 }
5827 }
5828// [/RLVa:KB]
5829
5700 LLMessageSystem* msg = gMessageSystem; 5830 LLMessageSystem* msg = gMessageSystem;
5701 msg->newMessageFast(_PREHASH_StartLure); 5831 msg->newMessageFast(_PREHASH_StartLure);
5702 msg->nextBlockFast(_PREHASH_AgentData); 5832 msg->nextBlockFast(_PREHASH_AgentData);
@@ -5729,13 +5859,28 @@ void handle_lure(const LLUUID& invitee)
5729void handle_lure(LLDynamicArray<LLUUID>& ids) 5859void handle_lure(LLDynamicArray<LLUUID>& ids)
5730{ 5860{
5731 LLSD edit_args; 5861 LLSD edit_args;
5732 edit_args["REGION"] = gAgent.getRegion()->getName(); 5862// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a)
5863 edit_args["REGION"] = (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ? gAgent.getRegion()->getName() : rlv_handler_t::cstrHidden;
5864// [/RLVa:KB]
5865 //edit_args["REGION"] = gAgent.getRegion()->getName();
5733 5866
5734 LLSD payload; 5867 LLSD payload;
5735 for (LLDynamicArray<LLUUID>::iterator it = ids.begin(); 5868 for (LLDynamicArray<LLUUID>::iterator it = ids.begin();
5736 it != ids.end(); 5869 it != ids.end();
5737 ++it) 5870 ++it)
5738 { 5871 {
5872// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d) | Modified: RLVa-1.0.0a
5873 // Only allow offering teleports if everyone is a @tplure exception or able to map this avie under @showloc=n
5874 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
5875 {
5876 const LLRelationship* pBuddyInfo = LLAvatarTracker::instance().getBuddyInfo(*it);
5877 if ( (!gRlvHandler.isException(RLV_BHVR_TPLURE, *it, RLV_CHECK_PERMISSIVE)) &&
5878 ((!pBuddyInfo) || (!pBuddyInfo->isOnline()) || (!pBuddyInfo->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION))) )
5879 {
5880 return;
5881 }
5882 }
5883// [/RLVa:KB]
5739 payload["ids"].append(*it); 5884 payload["ids"].append(*it);
5740 } 5885 }
5741 if (gAgent.isGodlike()) 5886 if (gAgent.isGodlike())