Permalink
// ==UserScript== | |
// @name Kongregate One | |
// @namespace profusiongames.com | |
// @author UnknownGuardian, AlphaOverall | |
// @version 1.2.3 | |
// @date 04/19/2013 | |
// @include http://www.kongregate.com/games/*/* | |
// @include http://www.kongregate.com/accounts/* | |
// @description Kongregate One - One script to rule them all. Everything here. | |
// @downloadURL none | // ==/UserScript==<< |
// This script can be found on GF: https://greasyfork.org/en/scripts/9905-kongregate-one | |
// Or on GH: https://github.com/AlphaOverall/KongOne | |
// Small Additions by AlphaOverall (http://www.kongregate.com/accounts/AlphaOverall) 2015 | |
// Written by UnknownGuardian (http://www.kongregate.com/accounts/UnknownGuardian) 2012 - 2013 | |
// Written by Ventero (http://www.kongregate.com/accounts/Ventero) 2009 - 2013 | |
// Licensed under MIT/X11 license | |
// Copyright (c) Ventero, UnknownGuardian | |
// http://www.opensource.org/licenses/mit-license.php | |
// All terms, licenses, credits, etc from scripts used here (documented in comments) apply | |
// This portion of attribution only applies to code written or modified based on MrSpontaneous' implementation | |
// Written by MrSpontaneous (http://www.kongregate.com/accounts/MrSpontaneous) 01/03/2010 | |
//This portion of attribution only applies to code written or modified based on skyboy's implementation. | |
/** | |
* | |
* Assorted Userscripts by skyboy. | |
* Visit http://github.com/skyboy for documentation, updates | |
* and more free code. | |
* | |
* | |
* Copyright (c) 2010, skyboy | |
* All rights reserved. | |
* | |
* Permission is hereby granted, free of charge, to any person | |
* obtaining a copy of this software and associated documentation | |
* files (the "Software"), to deal in the Software with | |
* restriction, with limitation the rights to use, copy, modify, | |
* merge, publish, distribute, sublicense copies of the Software, | |
* and to permit persons to whom the Software is furnished to do so, | |
* subject to the following conditions and limitations: | |
* | |
* ^ Attribution will be given to: | |
* skyboy, http://www.kongregate.com/accounts/skyboy; | |
* http://github.com/skyboy; http://skybov.deviantart.com | |
* | |
* ^ Redistributions of source code must retain the above copyright notice, | |
* this list of conditions and the following disclaimer in all copies or | |
* substantial portions of the Software. | |
* | |
* ^ Redistributions of modified source code must be marked as such, with | |
* the modifications marked and ducumented and the modifer's name clearly | |
* listed as having modified the source code. | |
* | |
* ^ Redistributions of source code may not add to, subtract from, or in | |
* any other way modify the above copyright notice, this list of conditions, | |
* or the following disclaimer for any reason. | |
* | |
* ^ Redistributions in binary form must reproduce the above copyright | |
* notice, this list of conditions and the following disclaimer in the | |
* documentation and/or other materials provided with the distribution. | |
* | |
* THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | |
* IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT | |
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A | |
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS | |
* OR COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DIRECT, | |
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
* OR OTHER LIABILITY,(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | |
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | |
* WHETHER AN ACTION OF IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
* NEGLIGENCE OR OTHERWISE) ARISING FROM, OUT OF, IN CONNECTION OR | |
* IN ANY OTHER WAY OUT OF THE USE OF OR OTHER DEALINGS WITH THIS | |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
function main() | |
{ | |
console.log("KongOne Script running."); | |
var dom = (typeof unsafeWindow === "undefined"?window:unsafeWindow); | |
dom.oneScriptVersion = "1.101"; | |
init(); | |
function init() | |
{ | |
if(typeof GM_setValue === 'undefined'){ | |
window.GM_setValue = function(a,b){localStorage.setItem(a,b)} | |
window.GM_getValue = function(a,b){var r=localStorage.getItem(a);return (r==null?b:r)} | |
window.GM_deleteValue = function(a){localStorage.removeItem(a)} | |
} | |
var url = dom.location.href; | |
url = url.substr(url.indexOf(".com/") + ".com/".length); | |
if(url.indexOf("/") != -1) | |
oneDirectory = url.substring(0,url.indexOf("/")); | |
else | |
oneDirectory = url; | |
oneDirectory = oneDirectory.split("?")[0]; | |
dom.holodeckCheckCounter = 0 | |
dom.holodeckInterval = dom.setInterval(checkIfHolodeckLoaded, 100) | |
dom.oneScriptsInitialize = []; | |
useScript("this", "accounts", init_showScriptOptions, false, true); | |
useScript("Chat Timestamp", "games", init_chatTimestamp, true, true); | |
useScript("Chat PM Notifier", "games", init_PMNotifier, true, true); | |
useScript("Chat Line Highlighting", "games", init_chatLineHighlighting, true, true); | |
useScript("Chat Reply-command", "games", init_replyCommand, true, true); | |
//useScript("Chat Reply-command (hotkey)", "games", init_replyHotkey, true, true); | |
useScript("Chat Username-completion", "games", init_usernameCompletion, true, true); | |
useScript("Chat Mouseover Timestamp", "games", init_chatMouseoverTimestamp, true, false); | |
useScript("Chat Afk Command", "games", init_afk, true, true); | |
useScript("Chat Character-limit", "games", init_chatCharacterLimit, true, true); | |
useScript("Chat KongreLink", "games", init_kongreLink, true, true); | |
//useScript("Chat Images", "games", init_chatImage, true, true); | |
useScript("Chat Resizer", "games", init_chatResizer, true, true); | |
useScript("Kongquer", "games", init_kongquer, true, true); | |
useScript("Whisper Catch", "games", init_whisperCatch, true, true); | |
addScripts(false); | |
} | |
function useScript(name, page, callback, requiresHolodeck, defaultEnabled) | |
{ | |
dom.oneScriptsInitialize.push({name:name, page:page, callback:callback, requiresHolodeck:requiresHolodeck, added:false, defaultEnabled:defaultEnabled}); | |
} | |
function checkIfHolodeckLoaded() | |
{ | |
holodeckCheckCounter++; | |
console.log("[KongOne] Checking if holodeck loaded"); | |
if(typeof holodeck === 'undefined') | |
{ | |
} | |
else if(holodeck.ready) | |
{ | |
dom.clearInterval(dom.holodeckInterval); | |
console.log("[KongOne] Holodeck loaded"); | |
addScripts(true); | |
} | |
if(holodeckCheckCounter > 40) | |
{ | |
dom.clearInterval(dom.holodeckInterval); | |
console.log("[KongOne] Holodeck failed to load"); | |
} | |
} | |
function addScripts(onlyHolodeckRequired) | |
{ | |
console.log("[KongOne] Adding Scripts with holodeckRequired = " + onlyHolodeckRequired); | |
dom.oneScriptsInitialize.each(function(item) | |
{ | |
if(!item.defaultEnabled && GM_getValue("onescript-" + item.name, "null") == "null")//never been touched before | |
GM_setValue("onescript-" + item.name, "false"); | |
if(item.requiresHolodeck == onlyHolodeckRequired && !item.added) | |
{ | |
if(item.page == oneDirectory && GM_getValue("onescript-" + item.name, "true") == "true") | |
{ | |
console.log("[KongOne] Adding Script: " + item.name); | |
item.callback(); | |
item.added = true; | |
} | |
} | |
}) | |
console.log("[KongOne] Added Scripts"); | |
} | |
//============ | |
// This script's UI | |
//============ | |
function init_showScriptOptions() | |
{ | |
console.log("init shot script") | |
var div = new Element("div", {"style":"background-color:#FFF;padding: 8px;"}).update("<h2>Scripts</h2>Enable - Script Name<p></p>"); | |
$("profile_aside").down().insert(div); | |
dom.oneScriptsInitialize.each(function(item) | |
{ | |
if(item.name == "this") | |
return true; //aka, continue for each loops | |
var span = new Element("span", {"style":"margin-top: 5px !important;display: block;"}); | |
div.insert(span); | |
var checkbox = new Element("input", {"type":"checkbox", "id":"onescript-" + item.name, "style":"margin-top:2px;vertical-align:top;margin-right:8px;"}); | |
var label = new Element("label", {"class":"pls"}) | |
checkbox.checked = GM_getValue(checkbox.id,item.defaultEnabled?"true":"false") == "true"; | |
label.update(item.name); | |
span.insert(checkbox); | |
span.insert(label); | |
checkbox.onchange = toggleScript; | |
}); | |
} | |
function toggleScript() | |
{ | |
console.log("[KongOne] Toggled script"); | |
GM_setValue(this.id,this.checked); | |
} | |
//============ | |
// Chat Timestamps | |
// http://userscripts.org/scripts/review/55571 | |
//============ | |
function init_chatTimestamp() | |
{ | |
var holodeck = dom.holodeck, | |
ChatDialogue = dom.ChatDialogue; | |
console.log(holodeck, " h", ChatDialogue, " c"); | |
if(holodeck && ChatDialogue) | |
{ | |
ChatDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
if(!holodeck.__timestamp){ | |
holodeck.__timestamp = true; | |
holodeck.addChatCommand("timeformat", function(l,n){ | |
var k = n.match(/^\/\S+\s+(\d+)/), | |
m = "", | |
q = l.activeDialogue(); | |
k && (m=k[1]); | |
if(m==12 || m==24){ | |
l._timeFormat = m; | |
window.setTimeout(function(){GM_setValue("kong_timeformat", m);}, 0); | |
q.displayMessage("Timeformat", "Set to "+m+"-hour clock (hh:mm:ss"+(m==12?" AM/PM)":")"), { "class": "whisper received_whisper"}, {non_user: true}); | |
} else { | |
q.displayMessage("Timeformat", "Allowed values: 12 and 24", { "class": "whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("tscolor", function(l,n){ | |
var k = n.match(/^\/\S+\s+([0-9a-f]{6})/i), | |
z = ""; | |
k&&(z = "#"+k[1]); | |
if (z){ | |
updateColor(z); | |
window.setTimeout(function(){GM_setValue("kong_timestampcolor", z);}, 0); | |
l.activeDialogue().displayMessage("Timestamp", "Set font-color to "+z, { "class": "whisper received_whisper"}, {non_user: true}); | |
} else { | |
l.activeDialogue().displayMessage("Timestamp", "No valid color! Format is /tscolor ###### (# = hex character)", {"class":"whisper received_whisper"}, {non_user: true}) | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("toggleseconds", function(l,n){ | |
if(l._showSeconds){ | |
l._showSeconds = 0; | |
l.activeDialogue().displayMessage("Timestamp", "Now hiding seconds", { "class": "whisper received_whisper"}, {non_user: true}); | |
}else{ | |
l._showSeconds = 1; | |
l.activeDialogue().displayMessage("Timestamp", "Now showing seconds", { "class": "whisper received_whisper"}, {non_user: true}) | |
} | |
window.setTimeout(function(){GM_setValue("kong_timeshowseconds", l._showSeconds);}, 0); | |
return false; | |
}); | |
var timeformat = 12, fontcolor = "#999999", seconds = 0; | |
if(typeof GM_setValue !== "function"){ | |
GM_getValue = GM_setValue = function(){}; | |
} else { | |
timeformat = GM_getValue("kong_timeformat", 12)||12; | |
fontcolor = GM_getValue("kong_timestampcolor", "#999999")||"#999999"; | |
seconds = GM_getValue("kong_timeshowseconds", 0)||0; | |
} | |
holodeck._timeFormat = timeformat; | |
holodeck._showSeconds = seconds; | |
var updateColor = (function(c){ | |
var style = document.createElement("style"); | |
style.setAttribute("type", "text/css"); | |
function _updateColor(color){ | |
style.innerHTML = "span.inline_timestamp { color: " + color + " !important; }"; | |
}; | |
_updateColor(c); | |
document.body.appendChild(style); | |
return _updateColor; | |
})(fontcolor); | |
ChatDialogue.MESSAGE_TEMPLATE.template = '<p class="#{classNames}"><span style="float: left;" class="inline_timestamp">[#{time}] </span><span username="#{username}" class="username #{userClassNames}">#{prefix}#{username}</span><span class="separator">: </span><span class="message">#{message}</span><span class="clear"></span></p>' | |
ChatDialogue.MESSAGE_TEMPLATE.old_evaluate_inline = ChatDialogue.MESSAGE_TEMPLATE.evaluate; | |
ChatDialogue.MESSAGE_TEMPLATE.evaluate = function(args){ | |
var date = new Date(); | |
var hours = date.getHours(); | |
var minutes = date.getMinutes(); | |
var seconds = date.getSeconds(); | |
var time; | |
if (holodeck._timeFormat == 12){ | |
time = (hours<10?(hours==0?"12":"0"+hours):(hours>12?(hours>21?hours-12:"0"+(hours-12)):hours))+":"+(minutes<10?"0":"")+minutes+(holodeck._showSeconds?(":"+(seconds<10?"0":"")+seconds):"")+(hours>11?" PM":" AM"); | |
} else { | |
time = (hours<10?"0":"")+hours+":"+(minutes<10?"0":"")+minutes+(holodeck._showSeconds?(":"+(seconds<10?"0":"")+seconds):""); | |
} | |
args.time = time; | |
return this.old_evaluate_inline(args); | |
}; | |
} | |
} | |
} | |
//============ | |
// Chat Line Highlighting | |
// http://userscripts-mirror.org/scripts/review/49868 | |
//============ | |
function init_chatLineHighlighting() | |
{ | |
var holodeck = dom.holodeck, | |
CDialogue = dom.ChatDialogue, | |
CRoom = dom.ChatRoom, | |
CWindow = dom.ChatWindow; | |
if(CRoom && CDialogue){ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
CRoom.prototype = dom.CRprototype||dom.ChatRoom.prototype; | |
CWindow.prototype = dom.CWprototype||dom.ChatWindow.prototype; | |
if(!CDialogue.prototype.searchWord){ | |
if(!String.prototype.trim){ | |
String.prototype.trim = function(){ | |
return this.replace(/^\s+/, "").replace(/\s+$/, ""); | |
} | |
} | |
CDialogue.prototype.searchWord = function(a, b){ | |
for (var i=0;i<b.length;i++){ | |
var r = b[i].replace(/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\)/g, '\\$1'), | |
reg = new RegExp("\\b"+r+"\\b"); | |
if (reg.test(a)) return true; | |
} | |
return false; | |
}; | |
CDialogue.prototype.searchUser = function(a){ | |
return this.searchWord(a, this._holodeck._hluser); | |
}; | |
CDialogue.prototype.searchText = function(a){ | |
var l = this._holodeck, | |
z = l._highlighting.concat([l._username.toLowerCase()]); | |
return this.searchWord(a, z); | |
} | |
CWindow.prototype.hlFriend = function(a){ | |
return this._holodeck._hl_friends && this.isFriend(a); | |
} | |
CWindow.prototype.hlMod = function(a){ | |
if(!this._holodeck._hl_mods) return; | |
return this._rooms.any(function(roomArr){ | |
var room = roomArr[1]; | |
var user = room.user(a); | |
return user && room.canUserModerate(user); | |
}); | |
} | |
CWindow.prototype.friendOrMod = function(a){ | |
if(a.toLowerCase() == this._holodeck._username.toLowerCase()) return ""; | |
var colors = []; | |
if(this.hlMod(a)) colors.push(" hlmod"); | |
if(this.hlFriend(a)) colors.push(" hlfriend"); | |
if(colors.length > 1) | |
return colors[this._holodeck._hl_priority] | |
return (colors[0] || ""); | |
} | |
CDialogue.prototype.displayUnsanitizedMessageOldHighlight = CDialogue.prototype.displayUnsanitizedMessage; | |
CDialogue.prototype.displayUnsanitizedMessage = function(user, msg, attributes, options){ | |
if(!attributes) attributes = {}; | |
var classes = attributes["class"] || ""; | |
var isWhisper = (classes.indexOf("whisper") >= 0); | |
if(!(options && options["private"])) | |
classes += this._user_manager.friendOrMod(user.toLowerCase()); | |
if(!isWhisper && | |
!this._user_manager.isMuted(user.toLowerCase()) && | |
(this.searchUser(user.toLowerCase()) || | |
this.searchText(msg.toLowerCase()))) { | |
classes += " highlight"; | |
if(typeof this.new_private_message === "function") { | |
var oldChime = holodeck._pm_chime; | |
holodeck._pm_chime = holodeck._hl_chime; | |
this.new_private_message(); | |
holodeck._pm_chime = oldChime; | |
} | |
} | |
attributes["class"] = classes; | |
this.displayUnsanitizedMessageOldHighlight(user, msg, attributes, options); | |
} | |
holodeck.addChatCommand("highlight", function(l,n){ | |
var k = n.match(/^\/\S+\s+(.+)/), | |
z = ""; | |
k&&(z = k[1]) | |
if(z){ | |
z = z.replace(/\s+/g, ' ').trim(); | |
window.setTimeout(function(){GM_setValue("kong_highlighting", z.toLowerCase());}, 0); | |
l.activeDialogue().kongBotMessage("Now highlighting: "+z+" "+l._username); | |
l._highlighting = z.toLowerCase().split(' '); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("hluser", function(l,n){ | |
var k = n.match(/^\/\S+\s+(.+)/), | |
z = ""; | |
k&&(z = k[1]) | |
if(z){ | |
z = z.replace(/\s+/g, ' ').trim(); | |
window.setTimeout(function(){GM_setValue("kong_highlightuser", z.toLowerCase());}, 0); | |
l.activeDialogue().kongBotMessage("Now highlighting user(s): "+z); | |
l._hluser = z.toLowerCase().split(' '); | |
} | |
return false; | |
}); | |
function generateCallback(name, stop, start){ | |
return function(l, n){ | |
if(l["_hl_" + name]){ | |
l["_hl_" + name] = 0; | |
l.activeDialogue().kongBotMessage(stop || "Stopped highlighting messages by " + name); | |
}else{ | |
l["_hl_" + name] = 1; | |
l.activeDialogue().kongBotMessage(start || "Now highlighting messages by " + name); | |
} | |
window.setTimeout(function(){GM_setValue("kong_highlight"+name, l["_hl_" + name]);}, 0); | |
return false; | |
} | |
} | |
holodeck.addChatCommand("hlmods", generateCallback("mods")); | |
holodeck.addChatCommand("hlfriends", generateCallback("friends")); | |
holodeck.addChatCommand("hlchime", generateCallback("chime", "Stopped playing the chime for highlighted messages", | |
"Now playing the chime for highlighted messages")); | |
holodeck.addChatCommand("hlpriority", generateCallback("priority", "Now prioritizing mods over friends", "Now prioritizing friends over mods")); | |
function generateColorCallback(selector, rule, name, text, max){ | |
if(!max) max = 1; | |
return function(l, n){ | |
var k = n.match(/^\/\S+\s+#?([0-9a-f]{6})/i), | |
z = "", | |
count = 0; | |
if(k) z = "#" + k[1]; | |
if(z){ | |
for(var i = 0; i < sheet.cssRules.length; i++){ | |
if(sheet.cssRules[i].selectorText.indexOf(selector) == 0){ | |
sheet.cssRules[i].style.setProperty(rule, z, "important"); | |
if(++count == max){ | |
window.setTimeout(function(){GM_setValue("kong_" + name, z);}, 0); | |
l.activeDialogue().kongBotMessage("New " + (text||name) + ": " + z); | |
return false; | |
} | |
} | |
} | |
} else { | |
l.activeDialogue().kongBotMessage("No valid color! Format is /" + name + " XXXXXX (X = hex character)"); | |
} | |
return false; | |
} | |
}; | |
holodeck.addChatCommand( | |
"whispercolor", | |
generateColorCallback("#kong_game_ui .chat_message_window .whisper", | |
"background-color", | |
"whispercolor") | |
) | |
holodeck.addChatCommand( | |
"friendcolor", | |
generateColorCallback("#kong_game_ui .chat_message_window .hlfriend span.chat_message_window_username", | |
"color", | |
"friendcolor") | |
) | |
holodeck.addChatCommand( | |
"hlcolor", | |
generateColorCallback("#kong_game_ui .chat_message_window .highlight", | |
"background-color", | |
"hlcolor", | |
"highlighting-color", | |
2) | |
) | |
holodeck.addChatCommand( | |
"modcolor", | |
generateColorCallback("#kong_game_ui .chat_message_window .hlmod span.chat_message_window_username", | |
"color", | |
"modcolor") | |
) | |
holodeck.addChatCommand("hllist", function(l, n) { | |
var diag = l.activeDialogue(); | |
function botMessage(msg) { | |
diag.displayUnsanitizedMessage("Kong Bot", msg, {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
botMessage("Current highlighting settings:"); | |
if(holodeck._hluser.length > 0) { | |
botMessage('Users:'); | |
botMessage('Users: ' + holodeck._hluser.map(function(user) { | |
return ['<a href="#" onclick="holodeck.showMiniProfile(\'', user, | |
'\'); return false;">', user, '</a>'].join(""); | |
}).join(" ")); | |
} else { | |
botMessage("No users highlighted"); | |
} | |
if(holodeck._highlighting.length > 0) { | |
botMessage('Words: ' + holodeck._highlighting.join(" ")); | |
} else { | |
botMessage("No words highlighted"); | |
} | |
botMessage('Highlight color: <span style="color: ' + color + '">' + | |
color + '</span>'); | |
botMessage('Whisper color: <span style="color: ' + wcolor + '">' + | |
wcolor + '</span>'); | |
botMessage("Highlighting friends: " + | |
(holodeck._hl_friends ? "Yes" : "No") + | |
' (color: <span style="color: ' + fcolor + '">' + | |
fcolor + '</span>)'); | |
botMessage("Highlighting mods: " + | |
(holodeck._hl_mods ? "Yes" : "No") + | |
' (color: <span style="color: ' + mcolor + '">' + | |
mcolor + '</span>)'); | |
botMessage("Highlight priority: " + | |
(holodeck._hl_priority ? "Friends over mods" : "Mods over friends")); | |
botMessage("Playing chime: " + | |
(holodeck._hl_chime ? | |
(typeof holodeck._pm_chime !== "undefined" ? "Yes" : | |
'No, <a href="http://userscripts.org/scripts/show/65622">script</a> not installed') : | |
"No")); | |
return false; | |
}); | |
holodeck.addChatCommand("hlreset", function(l, n) { | |
var diag = l.activeDialogue(); | |
diag.kongBotMessage("Resetting all highlighting preferences"); | |
holodeck._chat_commands.hlcolor[0](holodeck, "/color #def6ea"); | |
holodeck._chat_commands.whispercolor[0](holodeck, "/color #deeaf6"); | |
holodeck._chat_commands.friendcolor[0](holodeck, "/color #006600"); | |
holodeck._chat_commands.modcolor[0](holodeck, "/color #ba6328"); | |
holodeck._hl_priority = 1; | |
holodeck._hl_friends = 1; | |
holodeck._hl_mods = 1; | |
holodeck._hl_chime = 1; | |
holodeck._highlighting = []; | |
holodeck._hluser = []; | |
["highlighting", "highlightuser", "hlcolor", "whispercolor", "friendcolor", | |
"modcolor", "highlightfriends", "highlightpriority", "highlightmods", | |
"highlightchime"].forEach(function(pref) { | |
window.setTimeout(function() { | |
GM_deleteValue("kong_" + pref); | |
}, 0); | |
}); | |
return false; | |
}); | |
holodeck._chat_commands.hl = holodeck._chat_commands.highlight; | |
holodeck._chat_commands.hlfriend = holodeck._chat_commands.hlfriends; | |
holodeck._highlighting = []; | |
holodeck._hluser = []; | |
var color = "#def6ea", wcolor = "#deeaf6", fcolor = "#006600", mcolor = "#ba6328", priority = 1, friends = 1, mods = 1, chime = 1; | |
if(typeof GM_setValue !== "function"){ | |
GM_setValue = GM_getValue = function(){}; | |
} else { | |
// migrate old value | |
var temp = GM_getValue("kong_highlightcolor", ""); | |
if(temp){ | |
GM_setValue("kong_hlcolor", temp); | |
if(typeof GM_deleteValue === "undefined"){ | |
GM_setValue("kong_highlightcolor", ""); | |
} else { | |
GM_deleteValue("kong_highlightcolor"); | |
} | |
} | |
var list = GM_getValue("kong_highlighting"), | |
user = GM_getValue("kong_highlightuser"); | |
color = GM_getValue("kong_hlcolor", "#def6ea")||"#def6ea"; | |
wcolor = GM_getValue("kong_whispercolor", "#deeaf6")||"#deeaf6"; | |
fcolor = GM_getValue("kong_friendcolor", "#006600")||"#006600"; | |
mcolor = GM_getValue("kong_modcolor", "#ba6328")||"#ba6328"; | |
friends = GM_getValue("kong_highlightfriends", 1); | |
priority = GM_getValue("kong_highlightpriority", 1); | |
mods = GM_getValue("kong_highlightmods", 1); | |
chime = GM_getValue("kong_highlightchime", 1); | |
if(list){holodeck._highlighting = list.trim().split(' ')}; | |
if(user){holodeck._hluser = user.trim().split(' ')} | |
} | |
holodeck._hl_friends = friends; | |
holodeck._hl_mods = mods; | |
holodeck._hl_chime = chime; | |
holodeck._hl_priority = priority; | |
// guarantee we have a non-crossdomain stylesheet | |
var style = document.createElement("style"); | |
var head = document.getElementsByTagName("head")[0]; | |
(head || document.body).appendChild(style); | |
// now find it... | |
var sheet = null; | |
for(var s = document.styleSheets.length - 1; s >= 0; --s) { | |
try{ | |
if(document.styleSheets[s].cssRules && document.styleSheets[s].cssRules.length) { | |
sheet = document.styleSheets[s]; | |
break; | |
} | |
}catch(e){ /* no-op */ } | |
} | |
if(!sheet) { | |
alert("Kongregate Chat Line Highlighting could not find a style sheet!\nPlease send a message to Ventero about this problem."); | |
return; | |
} | |
sheet.insertRule('#kong_game_ui .chat_message_window .whisper { background-color: '+wcolor+' !important; }', sheet.cssRules.length); | |
sheet.insertRule('#kong_game_ui .chat_message_window .highlight.even { background-color: '+color+' !important; }', sheet.cssRules.length); | |
sheet.insertRule('#kong_game_ui .chat_message_window .highlight { background-color: '+color+' !important; }', sheet.cssRules.length); | |
sheet.insertRule('#kong_game_ui .chat_message_window .hlfriend span.chat_message_window_username { color: '+fcolor+' !important; }', sheet.cssRules.length); | |
sheet.insertRule('#kong_game_ui .chat_message_window .hlmod span.chat_message_window_username { color: '+mcolor+' !important; }', sheet.cssRules.length); | |
} | |
} | |
} | |
//============ | |
// Reply-Command | |
// http://userscripts-mirror.org/scripts/review/47963 | |
//============ | |
function init_replyCommand() | |
{ | |
var CDialogue = dom.ChatDialogue; | |
if (CDialogue){ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
if(!CDialogue.prototype.oldKeyPressReply){ | |
CDialogue.prototype.oldKeyPressReply = CDialogue.prototype.onKeyPress; | |
if(CDialogue.prototype.reply){ | |
CDialogue.prototype.oldreply = CDialogue.prototype.reply | |
} else { | |
CDialogue.prototype.oldreply = function(a){}; | |
} | |
CDialogue.prototype.reply = function(a){ | |
this._holodeck._reply = a; | |
this.oldreply(a); | |
} | |
if(!CDialogue.prototype.showReceivedPM){ | |
CDialogue.prototype.showReceivedPM = CDialogue.prototype.receivedPrivateMessage; | |
CDialogue.prototype.receivedPrivateMessage = function(a){ | |
if (a.data.success){ | |
this.reply(a.data.from) | |
} | |
this.showReceivedPM(a); | |
} | |
} | |
CDialogue.prototype.onKeyPress = function (a) { | |
var z, node = (this._input_node.wrappedJSObject || this._input_node); | |
if(a.which == 32 && | |
((a.currentTarget.selectionStart == 2 && (z = node.getValue().match(/^\/r(.*)/i))) || | |
(z = node.getValue().match(/^\/r\b(.*)/i)))){ | |
var x=z[1]||""; | |
if (this._holodeck._reply) { | |
this.setInput("/w "+this._holodeck._reply+" "+x); | |
} else { | |
this.setInput("/w "); | |
} | |
if(a.stop) a.stop(); | |
if(a.preventDefault) a.preventDefault(); | |
}; | |
this.oldKeyPressReply(a); | |
} | |
} | |
} | |
} | |
//========== | |
// Reply-Command (hotkey) | |
// http://userscripts-mirror.org/scripts/review/47983 | |
function init_replyHotkey(){ | |
var holodeck = dom.holodeck, | |
CDialogue = dom.ChatDialogue; | |
if (CDialogue && holodeck){ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
if(!CDialogue.prototype.oldKeyPressReplyHotkey){ | |
CDialogue.prototype.oldKeyPressReplyHotkey = CDialogue.prototype.onKeyPress; | |
CDialogue.prototype.onKeyPress = function (a) { | |
var node = (this._input_node.wrappedJSObject || this._input_node); | |
if (a.which == 13) { | |
this.cnt=0; | |
} else if (a.altKey && a.which == 114) { | |
this.cnt+=1; | |
l=this._holodeck._replyHotkey.length||-1; | |
reply=this._holodeck._replyHotkey[l-this.cnt]||""; | |
if(reply && this.cnt<=l){ | |
if(z=node.getValue()){ | |
if(z.match(/^\/[\s]*/)){ | |
z=z.replace(/^([^\s]+)\s*[^\s]*\s*(.*)/, '/w '+reply+' $2') | |
}else{ | |
z="/w "+reply+" "+z | |
}; | |
this.setInput(z) | |
}else{ | |
this._holodeck.insertPrivateMessagePrefixFor(reply); | |
} | |
}else if(this.cnt>l){ | |
z=node.getValue(); | |
if (z=="/w "+this._holodeck._replyHotkey[0]+" "){ | |
this.setInput("/w "); | |
this.cnt=0; | |
}else if(z=="" && l>0){ | |
this.cnt-=1; | |
this.setInput("/w "+this._holodeck._replyHotkey[l-this.cnt]+" "); | |
}else{ | |
r=z.match(/^\/[^\s]+\s+[^\s]+\s+(.*)/); | |
r&&(z=r[1]); | |
this.setInput(z); | |
this.cnt=0; | |
} | |
} | |
} | |
this.oldKeyPressReplyHotkey(a); | |
} | |
CDialogue.prototype.cnt=0; | |
CDialogue.prototype.whisperArray = function(a,x){var i=a.indexOf(x);if(-1!==i)a.splice(i, 1);return a.concat(x);}; | |
if(CDialogue.prototype.reply){ | |
CDialogue.prototype.oldreplyHotkey = CDialogue.prototype.reply | |
} else { | |
CDialogue.prototype.oldreplyHotkey = function(a){}; | |
} | |
CDialogue.prototype.reply = function(a){ | |
this._holodeck._replyHotkey=this.whisperArray(this._holodeck._replyHotkey, a); | |
this.oldreplyHotkey(a); | |
} | |
if(!CDialogue.prototype.showReceivedPM){ | |
CDialogue.prototype.showReceivedPM = CDialogue.prototype.receivedPrivateMessage; | |
CDialogue.prototype.receivedPrivateMessage = function(a){ | |
if (a.data.success){ | |
this.reply(a.data.from) | |
} | |
this.showReceivedPM(a); | |
} | |
} | |
holodeck._replyHotkey= new Array(); | |
} | |
} | |
} | |
//============ | |
// Username-Completion | |
// http://userscripts-mirror.org/scripts/review/49872 | |
// Thanks to kaedenn for the idea of adding a colon if the username is the first word in the message | |
//============ | |
function init_usernameCompletion() | |
{ | |
if(typeof ChatDialogue === "undefined" || | |
ChatDialogue.prototype.oldKeyPressTab) return; | |
var isChrome = (navigator.appVersion.indexOf("Chrome") >= 0); | |
if(isChrome) { | |
ChatDialogue.prototype.initialize = | |
ChatDialogue.prototype.initialize.wrap(function(old, p, i, h, u){ | |
old(p, i, h, u); | |
var self = this; | |
this._input_node.observe("keydown", function(event) { | |
if(event.keyCode != 9 || event.ctrlKey || event.altKey || event.metaKey) return; | |
self.onKeyPress(event); | |
}); | |
}) | |
} | |
ChatDialogue.prototype.oldKeyPressTab = ChatDialogue.prototype.onKeyPress; | |
ChatDialogue.prototype.tabcnt = 0; | |
ChatDialogue.prototype.done = 1; | |
ChatDialogue.prototype.onKeyPress = function(a){ | |
if (a.keyCode != 9 || a.ctrlKey){ | |
this.tabcnt = 0; | |
this.done = 1; | |
this.oldKeyPressTab(a); | |
return; | |
} | |
var node = (this._input_node.wrappedJSObject || this._input_node); | |
if (this.tabcnt == 0 && this.done == 1){ | |
var inputText = node.getValue(), | |
spaceAtCaret = inputText.substr(0, node.selectionStart).lastIndexOf(' '); | |
this._caretPos = node.selectionStart; | |
this._start = inputText.substr(0,spaceAtCaret); | |
if(this._start) this._start+=" "; | |
this._currentWord = inputText.substring(spaceAtCaret+1, this._caretPos); | |
this._rest = inputText.substr(this._caretPos); | |
} | |
this.done = 0; | |
var userArray = this._holodeck.chatWindow().activeRoom()._users_list, | |
possibleMatches = [], | |
z = node.getValue(); | |
if (z.match(/\s+$/)) z=z.replace(/\s+$/, '') | |
for (var i=0;i<userArray.length;i++){ | |
if(userArray[i].username.toLowerCase().indexOf(this._currentWord.toLowerCase())==0){ | |
possibleMatches.push(userArray[i].username); | |
} | |
} | |
if (this.tabcnt < possibleMatches.length){ | |
node.setValue(this._start + possibleMatches[this.tabcnt] + (this._start?" ":": ") + this._rest); | |
node.selectionStart = this._caretPos + possibleMatches[this.tabcnt].length - this._currentWord.length+(this._start?1:2); | |
node.selectionEnd = node.selectionStart; | |
this.tabcnt+=1; | |
} else { | |
node.setValue(this._start + this._currentWord + this._rest); | |
node.selectionStart = this._caretPos; | |
node.selectionEnd = this._caretPos; | |
this.tabcnt = 0 | |
} | |
if(a.stop) a.stop(); | |
if(a.preventDefault) a.preventDefault(); | |
} | |
} | |
//============ | |
// Kongregate Chat Mouseover Timestamp | |
// http://userscripts-mirror.org/scripts/review/50785 | |
//============ | |
function init_chatMouseoverTimestamp() | |
{ | |
var holodeck = dom.holodeck, | |
ChatDialogue = dom.ChatDialogue, | |
$ = dom.$; | |
function injectMouseover(dom, $, holodeck, ChatDialogue) { | |
var message_rollover_template = new dom.Element("div", {id: "message_rollover_template", "class": "user_rollover_container spritesite", style: "display: none"}); | |
var message_rollover = new dom.Element("div", {"class": "user_rollover spritesite"}); | |
var message_rollover_inner = new dom.Element("div", {"class": "user_rollover_inner"}); | |
var rollover_private_message_holder = new dom.Element("p", {"class": "rollover_message_private_message_link_message_link_holder"}); | |
var rollover_private_message_link = new dom.Element("a", {id: "rollover_message_private_message_link", "class": "rollover_message_private_message_link", href: "#"}).update("Private Message"); | |
rollover_private_message_holder.appendChild(rollover_private_message_link); | |
var rollover_time_text = new dom.Element("p", {id: "rollover_time_text"}); | |
message_rollover_inner.appendChild(rollover_time_text); | |
message_rollover_inner.appendChild(rollover_private_message_holder); | |
message_rollover.appendChild(message_rollover_inner); | |
message_rollover_template.appendChild(message_rollover); | |
$('chat_tab_pane').appendChild(message_rollover_template); | |
var MessageRollover = dom.MessageRollover = function(chat_dialogue) { | |
this.initialize(chat_dialogue); | |
return this; | |
} | |
MessageRollover.prototype = { | |
initialize: function(chat_dialogue){ | |
this._active_dialogue = chat_dialogue; | |
this._holodeck = chat_dialogue._holodeck; | |
this._rollover_template_node = $('message_rollover_template'); | |
this._private_message_node = $('rollover_message_private_message_link'); | |
this._time_node = $('rollover_time_text'); | |
this._private_message_observer = function(){}; | |
if(this._rollover_template_node){ | |
var rollover = this; | |
this._rollover_template_node.observe('mouseover', function(event){ | |
rollover.stopHide(); | |
dom.Event.stop(event); | |
}); | |
this._rollover_template_node.observe('mouseout', function(event){ | |
rollover.beginHide(); | |
dom.Event.stop(event); | |
}); | |
} | |
}, | |
show: function(time, user, event){ | |
if(this._hideTimer) clearTimeout(this._hideTimer); | |
this.updatePrivateMessageLink(user); | |
this.updateTimeText(time); | |
this.setRolloverPosition(event); | |
this._rollover_template_node.show(); | |
}, | |
setRolloverPosition: function(event) { | |
var messagenode = event.target; | |
var current_scroll_top = this._active_dialogue._message_window_node.scrollTop; | |
var current_message_top = messagenode.positionedOffset()[1]; | |
// nudge the user rollover up a little | |
current_message_top = current_message_top - 9; | |
var new_top_val = current_message_top; | |
if ( current_scroll_top < current_message_top ) { | |
new_top_val = current_message_top - current_scroll_top; | |
} | |
var top_style_str = new_top_val + 'px'; | |
this._rollover_template_node.setStyle({ top: top_style_str }); | |
// set left position based on username length | |
var username_width = messagenode.getWidth(); | |
var new_left_val = 20 + username_width; | |
var left_style_str = new_left_val + 'px'; | |
this._rollover_template_node.setStyle({ left: left_style_str }); | |
}, | |
updatePrivateMessageLink: function(username){ | |
var cw = this._holodeck.chatWindow(); | |
// replace observer | |
this._private_message_node.stopObserving('click'); | |
this._private_message_observer = dom.CapturesToInlineRegistration.decorate(function(event){ | |
// just put /w <username> in the chat input field | |
cw.insertPrivateMessagePrefixFor(username); | |
dom.Event.stop(event); | |
return false; | |
}); | |
this._private_message_node.observe('click', this._private_message_observer); | |
}, | |
updateTimeText: function(time){ | |
this._time_node.innerHTML = time; | |
}, | |
beginHide: function() { | |
var rollover = this; | |
if(this._hideTimer){ clearTimeout(this._hideTimer); } | |
this._hideTimer = setTimeout(function() { rollover.hide(); }, 500); | |
}, | |
stopHide: function() { | |
clearTimeout(this._hideTimer); | |
}, | |
hide: function() { | |
this._rollover_template_node.hide(); | |
} | |
}; | |
ChatDialogue.MESSAGE_TEMPLATE.template = '<p class="#{classNames}"><span username="#{username}" time="#{time}" class="username #{userClassNames}">#{prefix}#{username}</span><span class="separator">: </span><span class="message">#{message}</span><span class="clear"></span></p>'; | |
ChatDialogue.MESSAGE_TEMPLATE.old_evaluate = ChatDialogue.MESSAGE_TEMPLATE.evaluate; | |
ChatDialogue.MESSAGE_TEMPLATE.evaluate = function(args){ | |
var date = new Date(); | |
var hours = date.getHours(); | |
var minutes = date.getMinutes(); | |
var seconds = date.getSeconds(); | |
var time; | |
if (holodeck._timeFormat == 12){ | |
time = (hours<10?(hours==0?"12":"0"+hours):(hours>12?(hours>21?hours-12:"0"+(hours-12)):hours))+":"+(minutes<10?"0":"")+minutes+":"+(seconds<10?"0":"")+seconds+(hours>11?" PM":" AM"); // 12-hour clock | |
} else { | |
time = (hours<10?"0":"")+hours+":"+(minutes<10?"0":"")+minutes+":"+(seconds<10?"0":"")+seconds; //24-hour clock | |
} | |
args.time = time; | |
return this.old_evaluate(args); | |
}; | |
ChatDialogue.prototype.initialize = | |
ChatDialogue.prototype.initialize.wrap(function(old, parent_node, onInputFunction, holodeck, user_manager){ | |
old(parent_node, onInputFunction, holodeck, user_manager); | |
//var self = this; | |
//this._input_node.observe("keydown", function(event) { | |
// if(event.keyCode != 9 || event.ctrlKey || event.altKey || event.metaKey) return; | |
// self.onKeyPress(event); | |
//}); | |
//}) | |
//ChatDialogue.prototype.initialize = function(parent_node, onInputFunction, holodeck, user_manager) { | |
this._messages_until_next_collection = 0; | |
this._holodeck = holodeck; | |
this._user_manager = user_manager; | |
this._parent_node = parent_node; | |
this._messages_count = 0; | |
this._insertion_count = 0; | |
this._onInputFunction = onInputFunction; | |
this._message_rollover_manager = new MessageRollover(this); | |
// Establish references to re-used nodes | |
this._message_window_node = parent_node.down('.chat_message_window'); | |
this._input_node = parent_node.down('.chat_input'); | |
this._messages_to_retain = 200; | |
this._message_window_node.stopObserving(); | |
this._message_window_node.observe('mouseover', function(event) { | |
var time = event.target.getAttribute("time"), | |
user = event.target.getAttribute("username"); | |
if (time){ | |
holodeck.activeDialogue().showMessageRollover(time, user, event); | |
dom.Event.stop(event); | |
} | |
}); | |
this._message_window_node.observe('mouseout', function(event) { | |
holodeck.activeDialogue().hideMessageRollover(); | |
dom.Event.stop(event); | |
}); | |
// Bind event listeners | |
var dialogue = this, | |
input_node = this._input_node; | |
this._input_node.observe('keypress', function(event) { dialogue.onKeyPress(event); }); | |
this._input_node.observe('focus', function(event) { dialogue.clearPrompt(); }); | |
// Trigger mini-profile for clicks on usernames in chat. | |
this._message_window_node.observe('click', | |
function(event) { | |
if (event.target) { | |
var username = event.target.getAttribute('username'); | |
if(username){ | |
event.stop(); | |
user_manager.showProfile(username); | |
} | |
} | |
}); | |
}); | |
ChatDialogue.prototype.showMessageRollover = function (time, user, event){ | |
this._message_rollover_manager.show(time, user, event); | |
} | |
ChatDialogue.prototype.hideMessageRollover = function(){ | |
this._message_rollover_manager.beginHide(); | |
} | |
} | |
if(holodeck && ChatDialogue){ | |
if(!ChatDialogue.prototype && dom.CDprototype) | |
ChatDialogue.prototype = dom.CDprototype; | |
if(!holodeck.__mouseover){ | |
holodeck.__mouseover = true; | |
var script = document.createElement("script"); | |
script.type = "text/javascript"; | |
script.textContent = "(" + injectMouseover.toString() + ")(window, $, holodeck, ChatDialogue);"; | |
document.body.appendChild(script); | |
setTimeout(function(){document.body.removeChild(script);}, 100); | |
holodeck.addChatCommand("timeformat", function(l,n){ | |
var k = n.match(/^\/\S+\s+(\d+)/), | |
m = "", | |
q = l.activeDialogue(); | |
k && (m=k[1]); | |
if(m==12 || m==24){ | |
l._timeFormat = m; | |
window.setTimeout(function(){GM_setValue("kong_timeformat", m);}, 0); | |
q.displayMessage("Timeformat", "Set to "+m+"-hour clock (hh:mm:ss"+(m==12?" AM/PM)":")"), { "class": "whisper received_whisper"}, {non_user: true}); | |
} else { | |
q.displayMessage("Timeformat", "Allowed values: 12 and 24", { "class": "whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
var timeformat = 12; | |
if(typeof GM_setValue !== "undefined"){ | |
timeformat = GM_getValue("kong_timeformat", 12)||12; | |
}else{ | |
GM_setValue = function(){}; | |
} | |
holodeck._timeFormat = timeformat; | |
} | |
} | |
} | |
//============ | |
// Kongregate Chat Afk-Commands | |
// http://userscripts-mirror.org/scripts/show/48936 | |
//============ | |
function init_afk(){ | |
var AUTOAFK = "kongregate_autoAFKTimeout"; | |
var holodeck = dom.holodeck, | |
CDialogue = dom.ChatDialogue, | |
CRoom = dom.ChatRoom, | |
CWindow = dom.ChatWindow, | |
Base64 = dom.Base64; | |
if(holodeck && CDialogue){ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
CRoom.prototype = dom.CRprototype||dom.ChatRoom.prototype; | |
CWindow.prototype = dom.CWprototype||dom.ChatWindow.prototype; | |
if(!holodeck.__afk){ | |
holodeck.__afk = true; | |
if(!holodeck.setPresenceAwayOld){ | |
holodeck.setPresenceAwayOld = holodeck.setPresenceAway; | |
holodeck.setPresenceAway = function(){ | |
this._afk = 1; | |
this.setPresenceAwayOld(); | |
} | |
} | |
if(!holodeck.setPresenceChatOld){ | |
holodeck.setPresenceChatOld = holodeck.setPresenceChat; | |
holodeck.setPresenceChat = function(){ | |
this._afk = 0; | |
this.setPresenceChatOld(); | |
} | |
} | |
if(!CRoom.prototype.updateUserOld_AFK){ | |
CRoom.prototype.updateUserOld_AFK = CRoom.prototype.updateUser; | |
CRoom.prototype.updateUser= function(user){ | |
this.updateUserOld_AFK.apply(this, arguments); | |
if(user.username == this._chat_window.username()){ | |
if(this._presence != user.variables.presence){ | |
switch(user.variables.presence){ | |
case "chat": | |
if(!this._chat_window._holodeck._afktoggle) | |
this._chat_window._holodeck._afk = 0; | |
break; | |
case "away": | |
this._chat_window._holodeck._afk = 1; | |
break; | |
} | |
} | |
} | |
} | |
} | |
holodeck._chat_commands.afk[0] = function (l, n) { if (l._afk == 0) {l.setPresenceAway()} else {l.setPresenceChat()} return false; } | |
holodeck._chat_commands.back[0] = function(l,n){l.setPresenceChat(); return false}; | |
holodeck.addChatCommand("afkmessage", function (l, n){ var z = n.match(/^\/\S+\s+(.+)/); if (z){a = z[1]}else{a="I am currently AFK"} l._afkmessage = a; l.activeDialogue().kongBotMessage("AFK-message set to: "+a); return false}); | |
holodeck.addChatCommand("afktoggle", function(l, n){ if (l._afktoggle == 0) {l._afktoggle = 1; l.activeDialogue().kongBotMessage("Your AFK-flag won't get removed automatically")} else {l._afktoggle = 0; l.activeDialogue().kongBotMessage("Your AFK-flag will be removed automatically")} return false; }); | |
holodeck.addChatCommand("autoafk", function(l, n){ | |
var match = n.match(/^\/autoafk\s+(\d+)/), | |
timeout = 15; | |
if(match && match[1]){ | |
timeout = parseInt(match[1], 10); | |
} | |
l._autoAFK = timeout*60*1000; | |
window.setTimeout(function(){GM_setValue(AUTOAFK, timeout)}, 0); | |
if(l._autoAFKTimeout){ | |
clearTimeout(l._autoAFKTimeout); | |
} | |
if(timeout){ | |
l.activeDialogue().kongBotMessage("Set auto-AFK timeout to " + timeout + " minute" + (timeout > 1?"s":"")); | |
l._autoAFKTimeout = setTimeout(function(a){a.setPresenceAway();}, l._autoAFK, l); | |
} else { | |
l.activeDialogue().kongBotMessage("Disabled auto-AFK"); | |
} | |
return false; | |
}); | |
holodeck.checkAFK = function(){ | |
if(!this._afktoggle){ | |
this._afk = 0; | |
} | |
if(this._autoAFKTimeout){ | |
clearTimeout(this._autoAFKTimeout); | |
} | |
if(this._autoAFK){ | |
this._autoAFKTimeout = setTimeout(function(a){a.setPresenceAway();}, this._autoAFK, this); | |
} | |
} | |
holodeck.addOutgoingMessageFilter(function(message, nextFunction){ | |
holodeck.checkAFK(); | |
nextFunction(message, nextFunction); | |
}); | |
// Outgoing whispers aren't filtered (yet), so check them manually... | |
if(!CWindow.prototype.oldSendPrivateMessageAFK){ | |
CWindow.prototype.oldSendPrivateMessageAFK = CWindow.prototype.sendPrivateMessage; | |
CWindow.prototype.sendPrivateMessage = function(user, msg){ | |
if(msg.indexOf(this._holodeck._afkprefix)!=0){ | |
this._holodeck.checkAFK(); | |
} | |
this.oldSendPrivateMessageAFK(user, msg); | |
} | |
} | |
// Create setTimeout on session reconnect | |
if(!CWindow.prototype.onLoginOldAFK){ | |
CWindow.prototype.onLoginOldAFK = CWindow.prototype.onLogin; | |
CWindow.prototype.onLogin = function(){ | |
this.onLoginOldAFK(); | |
if(this._holodeck._afk) { | |
this._holodeck.setPresenceAway(); | |
} else { | |
this._holodeck.setPresenceChat(); | |
this._holodeck.checkAFK(); | |
} | |
} | |
} | |
if(!CDialogue.prototype.reply){ | |
CDialogue.prototype.reply = function(a){} | |
} | |
if(!CDialogue.prototype.showReceivedPM){ | |
CDialogue.prototype.showReceivedPM = CDialogue.prototype.receivedPrivateMessage; | |
} | |
CDialogue.prototype.receivedPrivateMessage = function(a){ | |
if (a.data.success){ | |
this.reply(a.data.from); | |
if(this._holodeck._afk && Base64.decode(a.data.message).indexOf(this._holodeck._afkprefix)!=0){this.sendPrivateMessage(a.data.from, this._holodeck._afkprefix+this._holodeck._afkmessage)} | |
} | |
this.showReceivedPM(a); | |
} | |
holodeck._afk = 0; | |
holodeck._afktoggle = 0; | |
holodeck._afkmessage = "I am currently AFK"; | |
holodeck._afkprefix = "[AFK] "; | |
var autoAFK = 15; | |
try{ | |
if(GM_setValue){ | |
autoAFK = GM_getValue(AUTOAFK, 15); | |
}else{ | |
GM_setValue = function(a,b){}; | |
} | |
}catch(e){ | |
GM_setValue = function(a,b){}; | |
} | |
holodeck._autoAFK = autoAFK*60*1000; | |
if(holodeck._autoAFK > 0){ | |
holodeck._autoAFKTimeout = setTimeout(function(a){a.setPresenceAway();}, holodeck._autoAFK, holodeck); | |
} | |
} | |
} | |
} | |
//============ | |
// Character-limit | |
// http://userscripts-mirror.org/scripts/review/48979 | |
//============ | |
function init_chatCharacterLimit(){ | |
var CDialogue = dom.ChatDialogue; | |
if(CDialogue){ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
if(!CDialogue.prototype.oldKeyPressLimit){ | |
CDialogue.prototype.oldKeyPressLimit = CDialogue.prototype.onKeyPress; | |
CDialogue.prototype.onKeyPress = function (a) { | |
var node = (this._input_node.wrappedJSObject || this._input_node); | |
this.oldKeyPressLimit(a); | |
if (node.getValue().length > 249) { | |
z = node.getValue(); | |
var y = ""; | |
if (n=z.match(/^(\/\S+\s+\S*\s*)(.*)/)){ | |
y=n[2]; | |
if (y.length>249){ | |
node.setValue(n[1]+y.substr(0, 249)) | |
} | |
}else{ | |
node.setValue(node.getValue().substr(0, 249)) | |
} | |
} | |
} | |
} | |
}; | |
} | |
//============ | |
// KongreLink (skyboy attribution applies) | |
// http://userscripts-mirror.org/scripts/review/72163 | |
//============ | |
function init_kongreLink() | |
{ | |
window.location.assign("javascript:void(holodeck.addIncomingMessageFilter(function(m,n){var REGEX=/((?:<\\S[^>]+?)?(?:>)?)?(\\b(?:(?:(ht|f)tp)s?:\\/\\/)?(((?:\\w+[.])?(?:[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9]|[a-z0-9]{1,2})[.])*(a(?:c|d|e(?:ro)?|f|g|i|l|m|n|o|q|r(?:pa)?|s(?:ia)?|t|u|w|x|z)|b(?:a|b|d|e|f|g|h|i|iz|j|l|m|n|o|r|s|t|v|w|y|z)|c(?:at?|c|d|f|g|h|i|k|l|m|n|o(?:m|op)?|r|u|v|x|y|z)|d[ejkmoz]|e(?:c|du|e|g|h|r|s|t|u)|f[ijkmor]|g(?:a|b|d|e|f|g|h|i|l|m|n|ov|p|q|r|s|t|u|w|y)|h[kmnrtu]|i(?:d|e|l|m|n(?:fo|t)|o|q|r|s|t)|je|jm|jo|jobs|jp|k[eghimnprwyz]|l[abcikrstuvy]|m(?:a|c|d|e|f|g|h|i?l|k|m|n|o(?:bi)?|p|q|r|s|t|u(?:seum)?|v|w|x|y|z)|n(?:a(?:me)?|c|et?|f|g|i|l|o|p|r|u|z)|om|org|p(?:a|e|f|g|h|k|l|m|n|ro?|s|t|w|y)|qa|r[eosuw]|s(?:a|b|c|d|e|g|h|i|j|k|l|m|n|o|r|t|u|v|y|z)|t(?:c|d|e?l|f|g|th|j|k|m|n|o|p|r(?:avel)?|t|v|w|z)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])\\b([.]\\B)?|\\d+[.]\\d+[.]\\d+[.]\\d+)(?::\\d+)?)(\\/+\\??(?:\\S+))?/ig,lF=/(?:<(\\S)[^>]+?href=[\"'])(?:\\b((?:(ht|f)tp)s?:\\/\\/)?(((?:\\S+[.])?(?:[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9]|[a-z0-9]{1,2})[.])*(a(?:c|d|e(?:ro)?|f|g|i|l|m|n|o|q|r(?:pa)?|s(?:ia)?|t|u|w|x|z)|b(?:a|b|d|e|f|g|h|i|iz|j|l|m|n|o|r|s|t|v|w|y|z)|c(?:at?|c|d|f|g|h|i|k|l|m|n|o(?:m|op)?|r|u|v|x|y|z)|d[ejkmoz]|e(?:c|du|e|g|h|r|s|t|u)|f[ijkmor]|g(?:a|b|d|e|f|g|h|i|l|m|n|ov|p|q|r|s|t|u|w|y)|h[kmnrtu]|i(?:d|e|l|m|n(?:fo|t)|o|q|r|s|t)|je|jm|jo|jobs|jp|k[eghimnprwyz]|l[abcikrstuvy]|m(?:a|c|d|e|f|g|h|i?l|k|m|n|o(?:bi)?|p|q|r|s|t|u(?:seum)?|v|w|x|y|z)|n(?:a(?:me)?|c|et?|f|g|i|l|o|p|r|u|z)|om|org|p(?:a|e|f|g|h|k|l|m|n|ro?|s|t|w|y)|qa|r[eosuw]|s(?:a|b|c|d|e|g|h|i|j|k|l|m|n|o|r|t|u|v|y|z)|t(?:c|d|e?l|f|g|th|j|k|m|n|o|p|r(?:avel)?|t|v|w|z)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])\\b([.]\\B)?|\\d+[.]\\d+[.]\\d+[.]\\d+)(?::\\d+)?)?(\\/+(?:\\S+))??(?:[\"'][^>]*?>([\\s\\S]+?)<\\/\\1>)/gi,q=function(w,c,r,l){var t,a,d;w=w.substring(0,(t=r.lastIndex)-(a=c[0]).length)+(a=(\"<a \"+(l?l[1]:'')+\" href='\"+(((d=c[3])==\"ht\"||d==\"f\")?\"\":\"http://\")+(d=a).replace(/<a[^>]+?href=([\"'])([\\s\\S]+?)\\1[^>]*?>[\\s\\S]+<\\/a>/, \"$2\")+\"' target='_blank'>\"+(c[9]||d)+\"</a>\"))+w.substring(t,w.length);REGEX.lastIndex+=a.length-d.length;return w},Q=function(b){var w=b,t=REGEX.lastIndex=0,a,c,d;while(c=REGEX.exec(w)){if(c[1]||(!c[5]&&!c[7])||(c[7]&&!(c[3]||c[8])))continue;w=q(w,c,REGEX)};while(c=lF.exec(w)){c[3]='ht';w=q(w,c,lF,c[0].match(/(class=(['\"])[^>]+?\\2)[\\s\\S]*?>/i))};return w};return n(Q(m),n)}))"); | |
} | |
//============ | |
// PM Notifier (MrSpontaneous attribution applies | |
// http://userscripts.org/scripts/review/48979 | |
//============ | |
function init_PMNotifier() | |
{ | |
var holodeck = dom.holodeck, | |
CDialogue = dom.ChatDialogue; | |
if (CDialogue) | |
{ | |
CDialogue.prototype = dom.CDprototype||dom.ChatDialogue.prototype; | |
console.log("pm1"); | |
if (!CDialogue.prototype.new_private_message) | |
{ | |
console.log("pm2"); | |
dom._animatedFav = false; | |
dom._pmCount = 0; | |
dom._baseTitle = document.title; | |
dom._blurred = false; | |
dom._chime = dom.document.createElement('audio'); | |
dom._chime.setAttribute('src', 'data:audio/wav;base64,UklGRi4IAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YakHAACAgIGBgYKEh4qLjIyNjY2LioqJh4aGio2QkZGRkI6Lh4B3cXJ0dnp/g4aHiImDdm1pZmVnbHR6fYGLlZuhpKOgnp2dnJGCdWldU0pEPjgyOktaaHR+homLjZWYjn9wYFJNSUZCPkNadYuitMXU2+Dn7uXRv7KnoaCkqKagpLO8wsfJyMG7uLetlYBzaF5ZVFNVVFFWYmt1fH58dm9pZl9NOy4hFQsEBAgKDRwyQ1NldICIi4+Xm5iVkId/eHR0dHN0gZWnuMna6fX6/P/979/Ova+knpybmJWZoaOlp6elopuVk4t7bF9SSUNAP0JGR0xZZXB8g4eLjod6aVdJPjEjHyUwPUlSXnKEiYF0aF1SQjIvOEdZa3iJnaqspp6WlZOLipSlus7d5vD17t/Qv7Oup5+cpbPCztHT1dTFrZN6ZVhLPjo/SVRcW1xiZFtKNiQYEAgAAg4fMkBIUV5mZV9ZVVpjZ218kanB0tzl7Ori2M/IyMrIydDd6vX49fHt4cy0nYd5cGVdXWJpb29pZmZhVEIuHRIMBQAEDhonMTY9RkxMSkVCRk9UWWV3ip6uusPLzcrFwLu7wMPFy9fj7/j6+PTs38y4o5OJgXhzdnuAhYR/endvYU87KiAaEw8SGyYxO0BGTlJQS0VAQEZKTllrf5WsvcHBwcC8s62xvcfT4+/z9vn359PEuayhm5iTi4J3alpQTkxFPjovIRYNBQIKHC0+UGFkXltbWFRXaX+UqsPZ4+fq6uHUzs7LyMvT19HGt5+Da19YVFJWW1ZNRTwvJis2QElVX1tRS05QUmF8mbHK5vn79e7j0b60rqqorLjCv7WnkHFVRDYtKzE2NDAvLysnLDlDTVpna2NdYmptdYqlu9Dn+v/68+zeyLavq6eor7i+vbeslnZcTkAzLS0uKiUmJiIdIzE6PkRMTUQ8P0ZLU2mJpLrT7Pv8+fXs28rEwr67v8vW1Mm/uLCllHdeVlJHNichIy5AXH2NjYuKhXpsaHJ6eHFoXFVWYHF2bWFVR0FETFdbV1piZ25/l7TM1tnZ0MfDwcPN1NTKtZ6Uj4iEgHRlU0I+RElSW1tZV1NTXGp/m662uLGloKCls8DCuaaMd2lgX2JeU0Y2KyszP0xSUFBQTlJfc4uisr/Hw7y8wMfS2NTHr5OAdGtpa2pmXlNNUFVaX15bWlhWW2RziJ2uvcbGwsC+wMXHw7ikjXpsY2JmZ2ZhV05LTE5RT0lFRUVKU2Fzhpajr7Owr66usrW0rqGNe25kXl9gX1xVTUtMT1RYWFdZXGFqdYSVpbG7wsK+vLm5vL26sqibj4d/enp5dW9mXFZTUFBQS0dGR0pSYHWGjY2RnK7Ayse3opOSmJaGbFFFSVRWTDwyPVd2iIh8cHWKqr++pouAh5idjGtLP0hdZ1xGOENkj6+2rKCmwOP589aznp+rq5RrQzI7UWBbSDU2T3eaqJ+NhpOwy9G/n4eDjpaIZDodGSk8PzMgGCdLdI+XkIuWstXq5syunaGtr5p0TTg6SlZTRTc3TnWarayhnarH5fPpzK6en6SehmJBMjVCRz4sHiE5X4CRj4WBjqnH1c62npOVmpV/YEU7QlBXTjwtLUJkhZeZk5GbscnVzrunnZ6jnolpSz1BUl9fUkRATmqKoKejnqCsvsnEspyNjJOWinFUPjhATVJMQDg8TmiAjZGSl6S5zNTMu6mhpKqpm4BjT0pPWFpTS0ZNXHGAh4aDhIydrbOsnIyGipSZkoFwYVZQUVRZYGdpa25sZWNpdoynur65rqKZlpaVl56ioJmLdV9SS09bZmZcTj4xMjtIU1xbVFJWWFdZXmp/ma24vbispaixvMza39rQwK6gl4yCgYOCfHBcRzs7QEpXW1ZOR0A9Q09gdo2eqK+xqZ+Zl5qltL/AuKaOeWxlYmVrbWpjWk5HRklOVl1fXVxbV1ZbZ3eMn6y0ubq1sK6vsLa9wsTAtqaViH52c3V1cWpgVU5MTk9RVFNQUVNUVVpganeIlZ6kpaGbl5eYm6Glp6ahmY2De3JtbG5vbmpiWlVWWV1jZmZjY2VnbHJ5gImSmqCmqaijn5ybnaKmqKahmZCKhYF9enh0cW5qZmRiYmJkZmdnaGhoaWtvdX2EiYyOkZKSkZGQj5CRkpOSkIqFgHt3dXNyc3R1dnl9gYOBfXh1c3Fta2xvcnV3e4CEhoaGhoiIhoSEhomNkJSan6GhnpuZlpGMiIaGhYOCg4WGhoOBfXp1cGtnZ2dnZ2hrbm9ubGtqaWdmZmltcHN2eXx9fHp6ent7e3x/g4iMj5KWmZqamZeWlJGOi4qJiYmJiouNjY2LioiFgn98e3p5eXl5ent7e3p6enp6enp6e3x8fH19fX19fn5+fn5+f39/f39/f3+AgICAgICAgICBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgABMSVNUWAAAAElORk9JQ09QHwAAAENvcHlyaWdodCCpIENpbmVtYXRyb25pY3MgMTk5NQAASVBSRCMAAABNaWNyb3NvZnQgUGx1cyEgriBmb3IgV2luZG93cyA5NSCuAAA='); | |
dom._chime.load(); | |
//dom.document.addEventListener("blur", function() { | |
window.onblur=function(){ | |
dom._blurred = true; | |
console.log("Blur1"); | |
};//, false); | |
console.log("pm3"); | |
//dom.document.addEventListener("focus", function() { | |
window.onfocus=function(){ | |
dom._blurred = false; | |
console.log("Focus 1"); | |
dom.pmReset(); | |
};//, false); | |
console.log("pm4"); | |
dom.pmReset = function() { | |
if (dom._animatedFav) { | |
dom.toggleFavLink(); | |
} | |
dom._pmCount = 0; | |
document.title = dom._baseTitle; | |
} | |
console.log("pm5"); | |
dom.createFavLink = function(attr) { | |
var link = document.createElement("link"); | |
link.type = attr['type']; | |
link.rel = attr['rel']; | |
link.href = attr['href']; | |
return link; | |
} | |
console.log("pm6"); | |
dom.toggleFavLink = function() { | |
var head = document.getElementsByTagName("head")[0]; | |
var links = head.getElementsByTagName("link"); | |
for (var i=0; i<links.length; i++) { | |
var link = links[i]; | |
if (link.rel=="shortcut icon") { | |
head.removeChild(link); | |
} | |
} | |
if (dom._animatedFav) { | |
head.appendChild(dom.createFavLink(dom._staticFavLinkAttr)); | |
} | |
else { | |
head.appendChild(dom.createFavLink(dom._animatedFavLinkAttr)); | |
} | |
dom._animatedFav = !dom._animatedFav; | |
} | |
console.log("pm7"); | |
dom._staticFavLinkAttr = {'rel':'shortcut icon', 'href':'/favicon.ico', 'type':'image/x-icon'}; | |
dom._animatedFavLinkAttr = { 'rel':'shortcut icon', 'href':'data:image/gif;base64,R0lGODlhIAAgAPceAGYAAJgAAJgBAZkCApoEBJkWGpkAM5krAJkpL5krM6EMDKQPEaARDaYkLassIpkrZplVM5lVZswrM8xVM8xVZsyAZsyAmcyqmcyqzP+qzMzVzP/VzP/V////zP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAhkAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAI/gATBBhIsKDBgwgTKlyI0ABBgRADRBQ40MCBiRIzUgxAYYPHjyA3ZDgw0ELIkyMHQvDAsqVLlhQvvJzpgSIFmi9j4nRJMcHOlhQt/GQpgSCFCxxmXqhAoeBRmhssVDhYYeYDhDdfbkgAAGHVlxMOynx5wSFCAF9dRjAolCzDti7DEtQwsynDtC3XSszwUoOErm9nhk2w4WWGjQyz8kxA12UHhgbxsrTQgaZeyAHgDoWJOYDkoRswo8W5VXFLDJg1nyYZoPDLqXdnZijocyaEwC9vF1TtgUPsl3YLNnapYeFnxAMl0LSAMEEC3heQJxhLFnHtnaEHOgAtgOBmBAMXIGzuHqDAZoIMxg8kcH5gA/WdDQqYT59+/Pv449MfoCAgACH5BAhkAAAALAAAAAAgACAAh5kAAJwICP38/P39/f7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAifAAsIHEiwoMGDCBMqXMiw4UEAECNKhDhwokWKFS9KzKgxIsGOHgWCDClyJEeQBTs+VLlyI8KLCi22nLhQZkqYNWl+tMmQZwGcDXkCDapzKNGRGB3+REryKFMASlkaTajxZNOYPpfqzOlyZ9aZSb1ufTlWbFeDVdGmNTsUKVufbq22NSlwwMgAA+2OFMCQgF+Cfv8qHUx4YWC/Aw4TGBgQADs%3D', 'type':'image/gif'}; | |
console.log("pm8"); | |
CDialogue.prototype.new_private_message = function() { | |
console.log("got pm 1"); | |
if (_blurred || (document.hidden != undefined && document.hidden) || (document.webkitHidden != undefined && document.webkitHidden)) { | |
console.log("got pm blurred"); | |
dom._pmCount++; | |
if (!dom._animatedFav) { | |
dom.toggleFavLink(); | |
} | |
document.title = "[" + dom._pmCount + "] " + dom._baseTitle; | |
if (holodeck._pm_chime) { | |
dom._chime.play(); | |
} | |
} | |
} | |
if(!CDialogue.prototype.showReceivedPM_notifier){ | |
CDialogue.prototype.showReceivedPM_notifier = CDialogue.prototype.receivedPrivateMessage; | |
CDialogue.prototype.receivedPrivateMessage = function(a){ | |
if (a.data.success && !this._user_manager.isMuted(a.data.from)) { | |
this.new_private_message(); | |
} | |
this.showReceivedPM_notifier(a); | |
} | |
} | |
holodeck.addChatCommand("pmchime", function (l,n){ | |
if(l._pm_chime) { | |
l._pm_chime = 0; | |
l.activeDialogue().kongBotMessage("PM chime is OFF"); | |
} else { | |
l._pm_chime = 1; | |
l.activeDialogue().kongBotMessage("PM chime is ON"); | |
} | |
window.setTimeout(function(){GM_setValue("kong_pmchime", l._pm_chime);}, 0); | |
return false; | |
}); | |
try{ | |
if (GM_setValue){ | |
var pm_chime = GM_getValue("kong_pmchime", 1); | |
}else{ | |
GM_setValue = function(a,b){}; | |
var pm_chime = 1; | |
} | |
}catch(e){ | |
GM_setValue = function(a,b){}; | |
var pm_chime = 1; | |
} | |
holodeck._pm_chime = pm_chime; | |
} | |
} | |
} | |
//============ | |
// PM Notifier (MrSpontaneous attribution applies | |
// http://userscripts.org/scripts/review/48979 | |
//============ | |
function init_chatResizer(){ | |
dom.defaultWidth = 500; | |
dom.defaultHeight = 600; | |
dom.spaceLeft = 200; | |
dom.center = true; | |
dom.userListHeight = 100; | |
if(!$('maingamecontent')) return; | |
var initialOffsetTop = $('maingamecontent').offsetTop + $('chat_tab_pane').offsetTop; | |
var initialOffsetLeft = $('maingamecontent').offsetLeft + $('chat_tab_pane').offsetLeft; | |
var minimumHeight = parseInt($("game").style.height, 10) - parseInt($('main_tab_set').clientHeight, 10) - 16; | |
var minimumWidth = 300; | |
if(dom.holodeck){ | |
var holodeck = dom.holodeck; | |
holodeck.addChatCommand("size", function(l, n){ | |
var m = n.match(/^\/\S+\s+(\S+)/); | |
var o = n.match(/^\/\S+\s+(\d+)\s+(\d+)(?:\s+(\d+))?/) | |
if(m && m[1] == "reset"){ | |
l.activeDialogue().kongBotMessage("Resetting size for this game to defaults."); | |
window.setTimeout(function(){GM_deleteValue("kong_resize_"+location.pathname)}, 0); | |
setWidth(window._defaultChatWidth); | |
setHeight(window._defaultChatHeight, window._defaultUserlistHeight, window._currentGameCentered); | |
return false; | |
} else if(m && m[1] == "show"){ | |
l.activeDialogue().kongBotMessage("Current chat size: width: " + window._currentChatWidth + "px, height: " + window._currentChatHeight + "px, userlist-height: " + window._currentChatUserlistHeight + "px."); | |
return false; | |
} else if(!o){ | |
l.activeDialogue().kongBotMessage("Please specify a width and a height: /size width height. Example: /size 500 500"); | |
return false; | |
} | |
var width = parseInt(o[1], 10); | |
var height = parseInt(o[2], 10); | |
var listHeight = parseInt(o[3]||100, 10); | |
var gameHeight = parseInt($('game').style.height, 10); | |
if(width < 300){ | |
l.activeDialogue().kongBotMessage("Minimum width is 300. Setting width to 300px."); | |
width = 300; | |
} | |
if(height < gameHeight){ | |
l.activeDialogue().kongBotMessage("Minimum height is the game's height. Setting height to " + gameHeight + "px."); | |
height = gameHeight; | |
} | |
if(listHeight > height - 200){ | |
l.activeDialogue().kongBotMessage("Userlist height is too large. Setting it to 100px"); | |
listHeight = 100; | |
} | |
window.setTimeout(function(){GM_setValue("kong_resize_"+location.pathname, width+"/"+height+"/"+listHeight)}, 0); | |
l.activeDialogue().kongBotMessage("Resizing chat to " + width + "px/" + height + "px/" + listHeight + "px"); | |
setWidth(width); | |
setHeight(height, listHeight, window._currentGameCentered); | |
return false; | |
}); | |
holodeck.addChatCommand("defaultsize", function(l, n){ | |
var m = n.match(/^\/\S+\s+(\S+)/); | |
var o = n.match(/^\/\S+\s+(\d+)\s+(\d+)(?:\s+(\d+))?/) | |
if(m && m[1] == "reset"){ | |
l.activeDialogue().kongBotMessage("Resetting default size to 500/600/100"); | |
window.setTimeout(function(){GM_deleteValue("kong_resize_default")}, 0); | |
return false; | |
} else if(m && m[1] == "show"){ | |
l.activeDialogue().kongBotMessage("Current chat size: width: " + window._defaultChatWidth + "px, height: " + window._defaultChatHeight + "px, userlist-height: " + window._defaultUserlistHeight + "px."); | |
return false; | |
} else if(!o){ | |
l.activeDialogue().kongBotMessage("Syntax /defaultsize width height userlist-height. userlist-height is optional. Example: /defaultsize 500 500 100"); | |
} | |
var width = parseInt(o[1], 10); | |
var height = parseInt(o[2], 10); | |
var listHeight = parseInt(o[3]||100, 10); | |
if(width < 300){ | |
l.activeDialogue().kongBotMessage("Minimum width is 300. Setting width to 300px."); | |
width = 300; | |
} | |
if(listHeight > height){ | |
l.activeDialogue().kongBotMessage("Userlist height is too large. Setting it to 100px"); | |
listHeight = 100; | |
} | |
window.setTimeout(function(){GM_setValue("kong_resize_default", width+"/"+height+"/"+listHeight)}, 0); | |
l.activeDialogue().kongBotMessage("Set default values to width: " + width + "px, height: " + height + "px, userlist-height: " + listHeight + "px."); | |
return false; | |
}); | |
holodeck.addChatCommand("centergame", function(l, n){ | |
var center = !window._currentGameCentered; | |
if(center){ | |
l.activeDialogue().kongBotMessage("Now centering the game"); | |
} else { | |
l.activeDialogue().kongBotMessage("Now aligning the game to the chat's bottom"); | |
} | |
window.setTimeout(function(){GM_setValue("kong_resize_center", center?1:0)}, 0); | |
centerGame(center); | |
return false; | |
}); | |
holodeck.addChatCommand("draggable", function(l, n){ | |
var chatwindow = document.getElementById("chat_container"); | |
//chatwindow.style.overflow = "auto"; | |
chatwindow.style.resize = "both"; | |
chatwindow.onresize = new function() { | |
var chatcontainer = document.getElementById("chat_window"); | |
chatcontainer.style.width = chatwindow.style.width; | |
chatcontainer.style.height = chatwindow.style.height; | |
console.log(chatwindow.style.width); | |
l.activeDialogue().kongBotMessage("Chat window is now resizeable"); | |
} | |
return false; | |
}); | |
} | |
var getString = "", centerVal = -1, defaults = ""; | |
getString = GM_getValue("kong_resize_"+location.pathname, ""); | |
centerVal = GM_getValue("kong_resize_center", -1); | |
defaults = GM_getValue("kong_resize_default", ""); | |
if(defaults){ | |
var splitArr = defaults.split("/"); | |
defaultWidth = parseInt(splitArr[0], 10)||defaultWidth; | |
defaultHeight = parseInt(splitArr[1], 10)||defaultHeight; | |
userListHeight = parseInt(splitArr[2], 10)||userListHeight; | |
} | |
window._defaultChatWidth = defaultWidth; | |
window._defaultChatHeight = defaultHeight; | |
window._defaultUserlistHeight = userListHeight; | |
var x = defaultWidth, y = defaultHeight, l = userListHeight, cg = center, override = false; | |
if(centerVal != -1){ | |
cg = (centerVal == 1); | |
} | |
if(getString){ | |
var splitArr = getString.split("/"); | |
x = parseInt(splitArr[0], 10)||defaultWidth; | |
y = parseInt(splitArr[1], 10)||defaultHeight; | |
l = parseInt(splitArr[2], 10)||userListHeight; | |
override = true; | |
} | |
var gameWidth = parseInt($('game').style.width, 10); | |
var gameHeight = parseInt($('game').style.height, 10); | |
if(x > minimumWidth){ | |
if(override || gameWidth + x < screen.width - spaceLeft){ // enough place to resize to specified width | |
setWidth(x); | |
}else{ // resize as far as possible | |
var chatWidth = screen.width - gameWidth - spaceLeft; | |
if(chatWidth > minimumWidth) setWidth(chatWidth); | |
} | |
} | |
if(y > minimumHeight && y > gameHeight){ | |
setHeight(y, l, cg); | |
} else { | |
setHeight(gameHeight, l, cg); | |
} | |
} | |
function centerGame(center){ | |
window._currentGameCentered = center; | |
if(center){ | |
var gameHeight = parseInt($('game').style.height, 10); | |
var mainHeight = parseInt($("maingame").style.height, 10); | |
$('game').style.top = (mainHeight - gameHeight)/2+"px" | |
$('game').style.position = "relative"; | |
}else{ | |
$('game').style.bottom = "0px"; | |
$('game').style.top = ""; | |
$('game').style.position = "absolute"; | |
} | |
} | |
function setHeight(height, userListHeight, center){ | |
if(!userListHeight) userListHeight = 100; | |
window._currentChatHeight = height; | |
window._currentChatUserlistHeight = userListHeight; | |
var quicklinksHeight = $('quicklinks') ? $('quicklinks').parentNode.clientHeight : 26; | |
var maintabHeight = $('main_tab_set').clientHeight; | |
var tabPaneHeight = height - 16; | |
var mainHeight = height + quicklinksHeight + maintabHeight; | |
var gameHeight = parseInt($('game').style.height, 10); | |
$("maingame").style.height = mainHeight + "px"; | |
$("maingamecontent").style.height = mainHeight + "px"; | |
$("flashframecontent").style.height = mainHeight + "px"; | |
$("chat_container").style.height = (height + maintabHeight) + "px"; | |
$("user_mini_profile_container").style.height = (height - 65) + "px"; | |
$("user_mini_profile").style.height = (height - 65) + "px"; | |
var messageWindows = $$(".chat_message_window"); | |
for(var i = 0; i < messageWindows.length; i++){ | |
messageWindows[i].style.height = (tabPaneHeight - userListHeight - 93)+"px"; // 93 = roomname, users in room etc. | |
} | |
var usersInRoom = $$(".users_in_room"); | |
for(i = 0; i < usersInRoom.length; i++){ | |
usersInRoom[i].style.height = userListHeight + "px"; | |
} | |
var roomsList = $$(".rooms_list"); | |
for(i = 0; i < roomsList.length; i++){ | |
roomsList[i].style.height = (height - 79)+"px"; | |
} | |
z = $("kong_game_ui").childNodes; | |
for(i=0;i<z.length;i++){ | |
if(z[i].nodeName=="DIV"){ | |
z[i].style.height = tabPaneHeight + "px"; | |
} | |
} | |
if(center != -1 && center !== undefined) | |
centerGame(center); | |
} | |
function setWidth(width){ | |
window._currentChatWidth = width; | |
var gameWidth = parseInt($("game").style.width, 10); | |
$("maingame").style.width = (gameWidth + 3 + width) + "px"; | |
$("maingamecontent").style.width = (gameWidth + 3 + width) + "px"; | |
$("flashframecontent").style.width = (gameWidth + 3 + width) + "px"; | |
$("chat_container").style.width = width + "px"; | |
$('chat_window_spinner').style.right = width/2 - 38 + "px"; | |
if($('high_scores_spinner')) | |
$('high_scores_spinner').style.right = width/2 - 38 + "px"; | |
var ui = $("kong_game_ui"); | |
z = ui.childNodes; | |
for(i=0;i<z.length;i++){ | |
if(z[i].tagName == "DIV") | |
z[i].style.width = (width - 17) + "px"; | |
} | |
$A(ui.querySelectorAll("textarea.chat_input")).forEach(function(el){ | |
el.style.width = (width - 21) + "px"; | |
}); | |
} | |
function $A(c){ | |
return [].slice.call(c); | |
} | |
//=========== | |
// Kongquer | |
// http://alphaoverall.com | |
// by AlphaOverall (http://www.kongregate.com/accounts/AlphaOverall) | |
// Copyright (c) 2015 AlphaOverall | |
// Inspired by Kongregate Get (http://userscripts-mirror.org/scripts/review/56432) | |
// Full credit to Matthew Ammann and Ventero for the /avglvl and /mostplayed commands | |
//========== | |
function init_kongquer() { | |
if(typeof holodeck !== "undefined" && !holodeck.__urlregex){ | |
holodeck.__urlregex = true; | |
} | |
function makeLink(user){ | |
return '<a href="#" onclick="holodeck.showMiniProfile(\'' + user + '\'); return false;">' + user + '</a>'; | |
} | |
var holodeck = dom.holodeck; | |
ChatDialogue = dom.ChatDialogue; | |
// | |
//Test command so you don't look stupid if script doesn't load | |
// | |
holodeck.addChatCommand("test", function(l,n){ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Script is active! Have fun...", {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
// | |
//From original Kongregate Get script (http://userscripts-mirror.org/scripts/review/56432) | |
// | |
holodeck.addChatCommand("avg", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var allLevels = 0; | |
for(var i=0; i < allUsers.length; i++){ | |
allLevels += allUsers[i]._level; | |
} | |
var avgLevel = Math.round(allLevels/allUsers.length*10)/10; | |
l.activeDialogue().displayUnsanitizedMessage("Average Level in Room", avgLevel , {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
if(holodeck && ChatDialogue && !holodeck._chat_commands.mostplayed) { | |
//Credit goes entirely to Ventero for this command. Thanks for fixing the command after the Kongregate update, Vent :) | |
holodeck.addChatCommand("mostplayed", function(l,n){ | |
var matchArr = n.match(/\/\S+\s+(\d+)/), | |
dialog = l.activeDialogue(), | |
gamesCount = 5, | |
userList = dom.$A(l.chatWindow().activeRoom().users()), | |
usersCount = userList.length; | |
if(matchArr && matchArr[1]) gamesCount = matchArr[1]; | |
function p(count){ | |
return count == 1?"":"s"; | |
} | |
var games = dom.$H(); | |
userList.each(function(user){ | |
console.log(user); | |
var o = user._game_url; | |
if(!games.get(o)){ | |
games.set(o, { | |
title: user._game_title, | |
count: 0, | |
user: "", | |
url: o | |
}); | |
} | |
games.get(o).count++; | |
games.get(o).user = user.username; | |
}); | |
var countArr = games.values().sort(function(a,b){ | |
return +b.count - +a.count; | |
}).slice(0, gamesCount); | |
var totalCount = games.size(); | |
dialog.displayUnsanitizedMessage("Kong Bot", usersCount+" user"+p(usersCount)+" playing "+totalCount+" different game" + p(totalCount), {"class":"whisper received_whisper"}, {non_user: true}); | |
dialog.displayUnsanitizedMessage("Kong Bot", gamesCount + " most played game" + p(gamesCount) + ":", {"class":"whisper received_whisper"}, {non_user: true}); | |
countArr.each(function(obj){ | |
dialog.displayUnsanitizedMessage("Kong Bot", | |
obj.count + " user" + p(obj.count) + " (" + | |
(obj.count > 1 ? "" : makeLink(obj.user) + ", ") + | |
(100*obj.count/usersCount).toFixed(1) + "%) " + | |
(obj.count > 1 ? "are" : "is") + ' playing <a href="' + | |
obj.url + '">' + obj.title + "</a>", {"class":"whisper received_whisper"}, {non_user: true}); | |
}); | |
return false; | |
}); | |
holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed; | |
} | |
// | |
//Rest by AlphaOverall | |
// | |
holodeck.addChatCommand("highlvl", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var highLevels = ""; | |
var highestLevel = 0; | |
var count = 0; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._level > highestLevel){ | |
highestLevel = allUsers[i]._level; | |
highLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
count = 1; | |
} | |
else if (allUsers[i]._level == highestLevel){ | |
highLevels = highLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
count+=1; | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Highest Level in Room", highestLevel + ", Usercount: " + count + ", Users: " + highLevels, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("lowlvl", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var lowLevels = ""; | |
var lowestLevel = Infinity; //Just to makes sure :P | |
var count = 0; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._level < lowestLevel){ | |
lowestLevel = allUsers[i]._level; | |
lowLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
count = 1; | |
} | |
else if (allUsers[i]._level == lowestLevel){ | |
count+=1; | |
lowLevels = lowLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Lowest Level in Room", lowestLevel + ", Usercount: " + count + ", Users: " + lowLevels, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("list", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var userList = ""; | |
var word = n.match(/^\/\S+\s+(.+)/); | |
var count = 0; | |
if (word){ | |
var toFind = word[1]; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i].username.toLowerCase().includes(toFind.toLowerCase())){ | |
if (userList == ""){ | |
userList = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
count = 1; | |
} | |
else{ | |
count+=1; | |
userList = userList + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
} | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Usernames Containing " + word[1], "Usercount: " + count + ", Users: " + userList, {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else{ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use this command like " + n + " cat", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("levels", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
if (z){ | |
var userLevels = ""; | |
var levelCount = []; | |
var displaymessage = ""; | |
if (z[1].includes("-")){ | |
var inbetween = z[1].split("-"); | |
console.log(inbetween[0]); | |
console.log(inbetween[1]); | |
if (inbetween[0] < inbetween[1]){ | |
for (var a=inbetween[0]; a <= inbetween[1]; a++){ | |
levelCount.push(a); | |
} | |
} | |
else{ | |
for (var a=inbetween[1]; a <= inbetween[0]; a++){ | |
levelCount.push(a); | |
} | |
} | |
displaymessage = z[1]; | |
} | |
else{ | |
var levelCount = z[1].split(" "); | |
displaymessage = levelCount.join(", "); | |
} | |
console.log(levelCount); | |
var count = 0; | |
for (var b=0; b <= levelCount.length; b++){ | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._level == levelCount[b] && userLevels == ""){ | |
userLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
count = 1; | |
} | |
else if (allUsers[i]._level == levelCount[b]){ | |
count+=1; | |
userLevels = userLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username); | |
} | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Level " + displaymessage, "Usercount: " + count + ", Users: " + userLevels, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
} | |
else{ | |
var levelsList = [l._active_user._attributes._object.level]; | |
for(var j=0; j < allUsers.length; j++){ | |
for (var k=0; k <= allUsers[j]._level; k++){ | |
if (allUsers[j]._level == k){ | |
if (levelsList.indexOf(k) < 0){ | |
levelsList.push(k); | |
} | |
} | |
} | |
} | |
levelsList.sort(function(a, b){return a-b}); | |
l.activeDialogue().displayUnsanitizedMessage("Levels", levelsList.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
} | |
}); | |
holodeck.addChatCommand("highfans", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var highFans = ""; | |
var highestFans = 0; | |
var count = 0; | |
var content; | |
for(var i=0; i < allUsers.length; i++){ | |
var username = allUsers[i].username; | |
var url = "http://www.kongregate.com/accounts/" + username +"#user_followers"; | |
var request = new XMLHttpRequest(); | |
var amount; | |
request.addEventListener("load", function(evt){ | |
amount = evt.responseText; | |
}, false); | |
request.open("GET", url, true); | |
request.send(); | |
var div = document.createElement("div"); | |
div.innerHTML = amount; | |
var a = div.getElementsByTagName("li"); | |
for (var i = 0, len = a.length; i < len; i++){ | |
if (a[i].textContent.includes("fans")) | |
{ | |
console.log(a[i]); | |
} | |
else { console.log(a[i] + "hahah");} | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Highest Fans in Room", content, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("developer", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var devs = []; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._developer){ | |
devs.push(makeLink(allUsers[i].username)); | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Developers in room", devs.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("admin", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var admins = []; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._admin){ | |
admins.push(makeLink(allUsers[i].username)); | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Admins in room", admins.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("moderator", function(l,n){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
var mods = []; | |
for(var i=0; i < allUsers.length; i++){ | |
if (allUsers[i]._moderator_room_ids.length > 0 || allUsers[i]._moderator_game_ids.length > 0){ | |
mods.push(allUsers[i].username); | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Mods in room", mods.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
//Simple commands that will show up in user info also | |
holodeck.addChatCommand("id", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("username", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Username", makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("kreds", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("level", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("age", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("email", function(l,n){ | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("user", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z){ | |
var roomDetails = l.chatWindow().activeRoom(); | |
var allUsers = roomDetails.users(); | |
for(var i=0; i < allUsers.length; i++){ | |
if (i == allUsers.length-1 && allUsers[i].username != z[1]){ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "User not in chat... Opening mini profile", {"class":"whisper received_whisper"}, {non_user: true}); | |
holodeck.showMiniProfile(z[1]); | |
return false; | |
} | |
if (allUsers[i].username == z[1]){ | |
var user = allUsers[i]; | |
l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user._chat_avatar_url+"\"></img>" + makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Level", user._level, {"class":"whisper received_whisper"}, {non_user: true}); | |
if (user._moderator_room_ids.length == 0 && user._moderator_game_ids.length == 0){ | |
l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/false/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else{ | |
l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/true/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true}); | |
if (!user._admin) { | |
l.activeDialogue().displayUnsanitizedMessage("Moderator Game Ids", user._moderator_game_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Moderator Room Ids", user._moderator_room_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Playing", "<a href=\"http://www.kongregate.com" + user._game_url + "\" target=\"_blank\">" + user._game_title + "</a>", {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Presence", user._presence, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Role", user._role, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
} | |
} | |
} | |
else { | |
var user = l._active_user._attributes._object; | |
l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user.avatar_url+"\">" + makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user.admin+"/"+user.moderator+"/"+user.developer+"/"+user.premium, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Points for Next Level", user.points_away, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Total Points", user.points, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Last Level Up", user.last_levelup_at, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Gameplays", user.gameplays_count, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Game Ratings", user.ratings_count, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("BOTD Earned This Week", user.botds_this_week, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
} | |
}); | |
holodeck.addChatCommand("available", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z){ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Availability of " + z[1] + ":<iframe src=\"httP://www.kongregate.com/accounts/availability?username=" + z[1] + "\" width=\"100%\" height=\"30\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("info", function(l,n){ | |
var info = l._chat_window._active_room; | |
var room = info._room; | |
l.activeDialogue().displayUnsanitizedMessage("Room Name", room.name, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Room ID", room.id, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Room Owner", "<a href=\"http://www.kongregate.com/accounts/" + room.owner + "\" target=\"_blank\">" + room.owner + "</a>", {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Room Type", room.type, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Favorite Room", info._favorite_room, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Users In Room", info._number_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true}); | |
l.activeDialogue().displayUnsanitizedMessage("Guests In Room", info._guests_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("botd", function(l,n){ | |
var kbotd = l._active_user._attributes._object; | |
var typeOf = "(easy)"; | |
if (kbotd.botd_reward_points == 5){//Do nothing | |
} | |
else if (kbotd.botd_reward_points == 15) {typeOf = "(medium)";} | |
else if (kbotd.botd_reward_points == 30){typeOf = "(hard)";} | |
else if (kbotd.botd_reward_points == 60){typeOf = "(impossible)";} | |
else {typeOf = "Points: " + kbotd.botd_reward_points;} //Just in case | |
l.activeDialogue().displayUnsanitizedMessage("BOTD", "<img src=\""+kbotd.botd_icon_uri+"\"></img>" + "<a href=\"" + kbotd.botd_game_uri + "\" target=\"_blank\">" + kbotd.botd_game_name + " - " + kbotd.botd_description + "</a> " + typeOf, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("friends", function(l,n){ | |
var kongfriends = l._chat_window._friends; | |
var final = []; | |
for(var friend in kongfriends){ | |
final.push("<a href=\"http://www.kongregate.com/accounts/" + friend + "\" target=\"_blank\">" + friend + "</a>"); | |
} | |
l.activeDialogue().displayUnsanitizedMessage("Friends", final.join(", "), {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("online", function(l,n){ | |
holodeck._chat_window.showOnlineFriends(); | |
return false; | |
}); | |
holodeck.addChatCommand("exit", function(l,n){ | |
close(); | |
return false; | |
}); | |
holodeck.addChatCommand("open", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z[1]) { | |
m = z[1].split(" "); | |
if (m[0] == "accounts"){ | |
if (m[1]){ | |
open("http://www.kongregate.com/accounts/" + m[1], "_blank"); | |
} | |
else{ | |
open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username); | |
} | |
} | |
else if (m[0] == "games"){ | |
if (m[1]) { | |
if (m[2]){ | |
open("http://www.kongregate.com/games/" + m[1] + "/" + m[2], "_blank"); | |
} | |
else{ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
} | |
else{ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game creator", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
} | |
else { | |
open("http://www.kongregate.com/search?q=" + z[1], "_blank"); | |
} | |
} | |
else { | |
open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("khelp", function(l,n){ | |
open("http://www.kongregate.com/pages/help", "_blank"); | |
return false; | |
}); | |
holodeck.addChatCommand("kong", function(l,n){ | |
open("http://www.kongregate.com", "_blank"); | |
return false; | |
}); | |
holodeck.addChatCommand("help", function(l,n){ | |
open("http://www.alphaoverall.com", "_blank"); | |
return false; | |
}); | |
holodeck.addChatCommand("signup", function(l,n){ | |
lightbox.prototype.initializeKongregateLightboxFromAjax('/accounts/new/behind_login?game_id=' + active_user.gameId(), { afterStaticContentLoad:lightbox.prototype.toggleRegistration }); | |
return false; | |
}); | |
holodeck.addChatCommand("login", function(l,n){ | |
active_user.activateInlineLogin(); | |
return false; | |
}); | |
holodeck.addChatCommand("signout", function(l,n){ | |
signoutFromSite(); | |
return false; | |
}); | |
holodeck.addChatCommand("google", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
open("https://www.google.com/search?q=" + z[1], "_blank"); | |
} | |
else { | |
open("https://www.google.com", "_blank"); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("bing", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
open("https://www.bing.com/search?q=" + z[1], "_blank"); | |
} | |
else { | |
open("https://www.bing.com", "_blank"); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("yahoo", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
open("https://search.yahoo.com/search;_ylt=Aq7xBwaF.DQZx151DcVK87ybvZx4?p=" + z[1], "_blank"); | |
} | |
else { | |
open("https://www.yahoo.com", "_blank"); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("wikipedia", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
open("https://en.wikipedia.org/wiki/" + z[1].replace(" ", "_"), "_blank"); | |
} | |
else { | |
open("https://en.wikipedia.org/", "_blank"); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("url", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
if (!z[1].includes("http://") && !z[1].includes("https://")){ | |
open("http://"+z[1], "_blank"); | |
} | |
else { | |
open(z[1], "_blank"); | |
} | |
} | |
else { | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use command like " + n + " https://www.google.com", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("calculator", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
var output = "Nothing happened"; | |
if (z) { | |
/*jshint multistr: true */ | |
if (z[1] == "help"){ | |
l.activeDialogue().displayUnsanitizedMessage("Math Commands", "+,-,*,<br>Math.abs(a) = absolute value of a<br>Math.acos(a) = arc cosine of a<br>\ | |
Math.asin(a) = arc sine of a<br>Math.atan(a) = arc tangent of a<br>Math.atan2(a,b) = arc tangent of a/b<br>Math.ceil(a) = integer closest to a and not less than a<br>\ | |
Math.cos(a) = cosine of a<br>Math.exp(a) = exponent of a (Math.E to the power a)<br>Math.floor(a) = integer closest to a, not greater than a<br>Math.log(a) = log of a base e<br>\ | |
Math.max(a,b) = the maximum of a and b<br>Math.min(a,b) = the minimum of a and b<br>Math.pow(a,b) = a to the power b<br>Math.random() = pseudorandom number 0 to 1<br>\ | |
Math.round(a) = integer closest to a <br> Math.sin(a) = sine of a<br>Math.sqrt(a) = square root of a<br>Math.tan(a) = tangent of a", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else{ | |
try { | |
output = eval(z[1]); //I know, I know, eval is evil | |
l.activeDialogue().displayUnsanitizedMessage("Calculation", z[1] + " = " + output, {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
catch (err){ | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", err, {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
} | |
} | |
else { | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use command like " + n + " 4+3-8*9/3^.5", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
console.log(output); | |
return false; | |
}); | |
holodeck.addChatCommand("youtube", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z) { | |
var m = z[1].split(" "); | |
if (m[0] == "embed"){ | |
var chatWindow = document.getElementsByClassName("chat_message_window"); | |
var chatWin; | |
if (chatWindow[2] != undefined && chatWindow[2].offsetHeight > chatWindow[1].offsetHeight){ | |
chatWin = chatWindow[2]; | |
} | |
else { | |
chatWin = chatWindow[1]; | |
} | |
var h = chatWin.offsetHeight; | |
if (chatWin.offsetWidth > chatWin.offsetHeight) { | |
h = chatWin.offsetHeight; | |
} | |
else{ | |
h = chatWin.offsetWidth*9/16; //YouTube 16:9 aspect ratio | |
} | |
if (m[1].includes("youtu.be/")){ | |
l.activeDialogue().displayUnsanitizedMessage("YouTube", "<iframe src=\"https://www.youtube.com/embed/" + m[1].split("youtu.be/")[1] + "\" width=\"100%\" height=\"" + h +"\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else if (m[1].includes("youtube.com/watch?v=")){ | |
l.activeDialogue().displayUnsanitizedMessage("YouTube", "<iframe src=\"https://www.youtube.com/embed/" + m[1].split("youtube.com/watch?v=")[1] + "\" width=\"100%\" height=\"" + h + "\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else{ | |
l.activeDialogue().displayUnsanitizedMessage("YouTube", "Invalid YouTube video url", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
} | |
else { | |
open("https://www.youtube.com/results?search_query=" + z[1], "_blank"); | |
} | |
} | |
else { | |
open("https://www.youtube.com", "_blank"); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("mp3", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z[1].includes(".mp3")) { | |
l.activeDialogue().displayUnsanitizedMessage("MP3 Container", "<audio src=\"" + z[1] + "\" controls><embed src=\"" + z[1] + "\" width=\"100%\" height=\"90\" loop=\"false\" autostart=\"true\"/>" + | |
"</audio>", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else { | |
l.activeDialogue().displayUnsanitizedMessage("MP3 Container", "Invalid mp3 url", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("img", function(l,n){ | |
var z = n.match(/^\/\S+\s+(.+)/); | |
if (z[1].includes(".jpg")||z[1].includes(".jpeg")||z[1].includes(".png")||z[1].includes(".gif")||z[1].includes(".bmp")) { | |
l.activeDialogue().displayUnsanitizedMessage("IMG Container", "<img src=\"" + z[1] + "\" style=\"max-width:100%; max-height:100%;\"/>", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
else { | |
l.activeDialogue().displayUnsanitizedMessage("IMG Container", "Invalid img url", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("time", function(l,n){ | |
var today = new Date(); | |
var format = today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear() + ", " + today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds(); | |
l.activeDialogue().displayUnsanitizedMessage("Date/Time", format, {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck.addChatCommand("reload", function(l,n){ | |
location.reload(); | |
return false; | |
}); | |
holodeck.addChatCommand("reloadgame", function(l,n){ | |
activateGame(); // Default function on Kongregate to reload/activate game | |
return false; | |
}); | |
holodeck.addChatCommand("removegame", function(l, n) { | |
try { | |
var gametd = document.getElementById("gameholder"); | |
gametd.parentNode.removeChild(gametd); | |
var width = document.getElementById("chat_container").offsetWidth; | |
width = (width > 550 ? width + 5 : 570) + "px"; | |
console.log("Resizing containers to " + width); | |
document.getElementById("flashframecontent").style.width = width; | |
document.getElementById("maingamecontent").style.width = width; | |
var maingame = document.getElementById("maingame"); | |
maingame.style.width = width; | |
maingame.style.height = (parseInt(maingame.style.height) + 5) + "px"; | |
} | |
catch (e) { | |
l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No Game Found / Could not resize", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false; | |
}); | |
holodeck.addChatCommand("clear", function(l,n){ | |
holodeck._active_dialogue.clear(); | |
return false; | |
}); | |
// holodeck.addChatCommand("report", function(l,n){ | |
// var z = n.match(/^\/\S+\s+(.+)/); | |
// if (z) { | |
// m = z[1].split(" "); | |
// if (m[0] == "help"){ | |
// l.activeDialogue().displayUnsanitizedMessage("Report Help", "To report someone, type /report username message, or just /report username. Both cases will bring up the report box in chat.", {"class":"whisper received_whisper"}, {non_user: true}); | |
// } | |
// else if (m[0] == null){ | |
// l.activeDialogue().displayUnsanitizedMessage("Report", "Invalid report format", {"class":"whisper received_whisper"}, {non_user: true}); | |
// } | |
// else { | |
// var message; | |
// if (m[1] != undefined) { | |
// var m2 = m.join(" "); | |
// message = m2.substr(m2.indexOf(' ')+1); | |
// } | |
// else { message = "";} | |
// active_room.showChatNag(' ' + | |
// '<div id="new_abuse_report" class="mvm mrl"><div id="abuse_form_internal" class="cntrBasic pam">' + | |
// '<form accept-charset="UTF-8" action="http://www.kongregate.com/accounts/' + m[0] + '/abuse_reports" method="post" onsubmit="new Ajax.Request(\'http://www.kongregate.com/accounts/aidansos132231/abuse_reports\', {asynchronous:true, evalScripts:true, method:\'post\', parameters:Form.serialize(this)}); return false;"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="ub9xDEoiIi+lRAPWsUL2yApjKAbA2XKTjRO/taF1zwE="></div>' + | |
// '<dl>' + | |
// '<dd class="report_options"><select id="select_type" label="Abuse Type" name="type" onchange="subjectChanged(\'' + m[0] + '\')">' + | |
// '<option value="InappropriateUsernameReport">Inappropriate Username</option>' + | |
// '<option value="InappropriateAvatarReport">Inappropriate Avatar</option>' + | |
// '<option value="InappropriateProfileReport">Offensive Profile Content</option>' + | |
// '<option selected="selected" value="InappropriateChatReport">Chat Behavior</option>' + | |
// '<option value="OtherAbuseReport">Other</option></select></dd>' + | |
// '<div id="description_field">' + | |
// '<dd class="form_block" id="abuse_report_description_block">' + | |
// '<dl>' + | |
// '<span class="error_block error" id="abuse_report_description_error_block">' + | |
// | |
// '</span>' + | |
// '<dd class="label_block" id="abuse_report_description_label_block">' + | |
// '<label for="abuse_report_description" id="abuse_report_description_label">Please describe your reason for reporting ' + m[0] + ' using as much detail as possible. We don\'t need chat logs:</label>' + | |
// '</dd>' + | |
// '<dd id="abuse_report_description_control_block" class="input_block"><textarea cols="55" id="abuse_report_description" name="abuse_report[description]" rows="4">' + message + '</textarea></dd>' + | |
// '</dl>' + | |
// '</dd>' + | |
// | |
// '</div>' + | |
// '</dl>' + | |
// | |
// '<p class="report_submission">' + | |
// '<input class="submission_button" id="abuse_form_submit" onclick="try{}catch(e){};if(!this.elem_abuse_form_submit){this.elem_abuse_form_submit=$(\'abuse_form_submit\');this.spin_abuse_form_submit=$(\'abuse_form_submit_spinner\');this.restore=function(t){return function(){t.elem_abuse_form_submit.show();t.spin_abuse_form_submit.hide();Event.stopObserving(window, \'unload\', t.restore);}}(this);}this.elem_abuse_form_submit.hide();this.spin_abuse_form_submit.show();Event.observe(window, \'unload\', this.restore);" type="submit" value="submit"><span class="spinner" id="abuse_form_submit_spinner" style="display:none" title="loading…"></span>' + | |
// '<a href="#" onclick="$(\'abuse_form_internal\').remove(); return false;">cancel</a>' + | |
// '</p>' + | |
// '</form></div>' + | |
// '</div>', {"class":"whisper received_whisper"}, {non_user: true}); | |
// | |
// } | |
// } | |
// return false; | |
// }); | |
holodeck.addChatCommand("cry", function(l,n){ | |
l.activeDialogue().displayUnsanitizedMessage("You're sad!", "( -̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥᷄◞ω◟-̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥᷅ )", {"class":"whisper received_whisper"}, {non_user: true}); | |
return false; | |
}); | |
holodeck._chat_commands.wiki = holodeck._chat_commands.wikipedia; | |
holodeck._chat_commands.weep = holodeck._chat_commands.krie = holodeck._chat_commands.cry; | |
holodeck._chat_commands.lol = holodeck._chat_commands.hi = holodeck._chat_commands.hmm = holodeck._chat_commands.test; | |
holodeck._chat_commands.userlist = holodeck._chat_commands.username = holodeck._chat_commands.list; | |
holodeck._chat_commands.date = holodeck._chat_commands.datetime = holodeck._chat_commands.now = holodeck._chat_commands.time; | |
holodeck._chat_commands.math = holodeck._chat_commands.calc = holodeck._chat_commands.calculator; | |
holodeck._chat_commands.goto = holodeck._chat_commands.http = holodeck._chat_commands.www = holodeck._chat_commands.url; | |
holodeck._chat_commands.lvl = holodeck._chat_commands.level; | |
holodeck._chat_commands.konghelp = holodeck._chat_commands.kongregatehelp = holodeck._chat_commands.khelp; | |
holodeck._chat_commands.kongregate = holodeck._chat_commands.kong; | |
holodeck._chat_commands.avglvl = holodeck._chat_commands.alvl = holodeck._chat_commands.avg; | |
holodeck._chat_commands.close = holodeck._chat_commands.exit; | |
holodeck._chat_commands.roominfo = holodeck._chat_commands.info; | |
holodeck._chat_commands.friendsonline = holodeck._chat_commands.online; | |
holodeck._chat_commands.u = holodeck._chat_commands.me = holodeck._chat_commands.user; | |
holodeck._chat_commands.admins = holodeck._chat_commands.administrator = holodeck._chat_commands.administrators = holodeck._chat_commands.admin; | |
holodeck._chat_commands.dev = holodeck._chat_commands.devs = holodeck._chat_commands.developers = holodeck._chat_commands.developer; | |
holodeck._chat_commands.mod = holodeck._chat_commands.mods = holodeck._chat_commands.moderators = holodeck._chat_commands.moderator; | |
holodeck._chat_commands.hlvl = holodeck._chat_commands.highlevel = holodeck._chat_commands.hlevel = holodeck._chat_commands.highlvl; | |
holodeck._chat_commands.llvl = holodeck._chat_commands.lowlevel = holodeck._chat_commands.llevel = holodeck._chat_commands.lowlvl; | |
holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed; | |
} | |
function init_whisperCatch() { | |
var WHISPERS_SAVED_KEY = "wc-whispers_saved", | |
WHISPER_WAIT_TIME_KEY = "wc-whisper_wait_time_key", | |
WHISPER_WAIT_TIME = 1000 * (parseInt(localStorage.getItem(WHISPER_WAIT_TIME_KEY) || 15)), | |
CHAT_DIALOGUE_RETRY = 100; | |
var CDialogue = dom.ChatDialogue; | |
var removeWhisper = function (w) { | |
var whispers = (JSON.parse(localStorage.getItem(WHISPERS_SAVED_KEY)) || []).filter(function (o) { return o.id != w.id; }); | |
localStorage.setItem(WHISPERS_SAVED_KEY, JSON.stringify(whispers)); | |
}; | |
var f = function () { | |
var chatDialogue = holodeck.activeDialogue(), | |
whispers = JSON.parse(localStorage.getItem(WHISPERS_SAVED_KEY)) || []; | |
if (!chatDialogue) | |
return; | |
while (whispers.length > 0) { | |
var w = whispers.shift(); | |
chatDialogue.receivedPrivateMessage(w); | |
} | |
clearInterval(__wc_interval); | |
}; | |
holodeck.__wc_whisperCount = 0; | |
CDialogue.prototype.__wc_receivedPrivateMessage = CDialogue.prototype.receivedPrivateMessage; | |
CDialogue.prototype.receivedPrivateMessage = function (a) { | |
this.__wc_receivedPrivateMessage(a); | |
a.id = holodeck.__wc_whisperCount; | |
var whispers = JSON.parse(localStorage.getItem(WHISPERS_SAVED_KEY)) || []; | |
whispers.push(a); | |
localStorage.setItem(WHISPERS_SAVED_KEY, JSON.stringify(whispers)); | |
setTimeout(removeWhisper, WHISPER_WAIT_TIME, a); | |
}; | |
var __wc_interval = setInterval(f, CHAT_DIALOGUE_RETRY); | |
holodeck.addChatCommand('wctime', function (holodeck, str) { | |
var args = str.split(' ').slice(1), | |
time = parseInt(args[0]); | |
if (!isNaN(time)) { | |
localStorage.setItem(WHISPER_WAIT_TIME_KEY, time); | |
holodeck.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Whisper save time set to "+ time +" seconds.", {"class":"whisper received_whisper"}, {non_user: true}); | |
} | |
return false | |
}); | |
} | |
} | |
// This injects our script onto the page. | |
// Kinda borrowed from http://userscripts.org/scripts/review/125666 | |
// Borrowed from: http://stackoverflow.com/a/2303228 | |
var script = document.createElement('script'); | |
script.appendChild(document.createTextNode('('+ main +')();')); | |
(document.body || document.head || document.documentElement).appendChild(script); |