Skip to content
Open

Hiro #43

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions Chatters.dme
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,126 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR ".git"
#define FILE_DIR ".git/hooks"
#define FILE_DIR ".git/info"
#define FILE_DIR ".git/logs"
#define FILE_DIR ".git/logs/refs"
#define FILE_DIR ".git/logs/refs/heads"
#define FILE_DIR ".git/logs/refs/remotes"
#define FILE_DIR ".git/logs/refs/remotes/origin"
#define FILE_DIR ".git/objects"
#define FILE_DIR ".git/objects/02"
#define FILE_DIR ".git/objects/05"
#define FILE_DIR ".git/objects/08"
#define FILE_DIR ".git/objects/10"
#define FILE_DIR ".git/objects/12"
#define FILE_DIR ".git/objects/14"
#define FILE_DIR ".git/objects/17"
#define FILE_DIR ".git/objects/18"
#define FILE_DIR ".git/objects/1b"
#define FILE_DIR ".git/objects/1c"
#define FILE_DIR ".git/objects/1f"
#define FILE_DIR ".git/objects/25"
#define FILE_DIR ".git/objects/28"
#define FILE_DIR ".git/objects/29"
#define FILE_DIR ".git/objects/38"
#define FILE_DIR ".git/objects/3a"
#define FILE_DIR ".git/objects/3b"
#define FILE_DIR ".git/objects/40"
#define FILE_DIR ".git/objects/46"
#define FILE_DIR ".git/objects/4a"
#define FILE_DIR ".git/objects/4c"
#define FILE_DIR ".git/objects/50"
#define FILE_DIR ".git/objects/56"
#define FILE_DIR ".git/objects/5c"
#define FILE_DIR ".git/objects/5d"
#define FILE_DIR ".git/objects/5e"
#define FILE_DIR ".git/objects/65"
#define FILE_DIR ".git/objects/6b"
#define FILE_DIR ".git/objects/6f"
#define FILE_DIR ".git/objects/76"
#define FILE_DIR ".git/objects/78"
#define FILE_DIR ".git/objects/79"
#define FILE_DIR ".git/objects/80"
#define FILE_DIR ".git/objects/88"
#define FILE_DIR ".git/objects/92"
#define FILE_DIR ".git/objects/9d"
#define FILE_DIR ".git/objects/a2"
#define FILE_DIR ".git/objects/ac"
#define FILE_DIR ".git/objects/b2"
#define FILE_DIR ".git/objects/b7"
#define FILE_DIR ".git/objects/c1"
#define FILE_DIR ".git/objects/ce"
#define FILE_DIR ".git/objects/db"
#define FILE_DIR ".git/objects/de"
#define FILE_DIR ".git/objects/e1"
#define FILE_DIR ".git/objects/e9"
#define FILE_DIR ".git/objects/ea"
#define FILE_DIR ".git/objects/f0"
#define FILE_DIR ".git/objects/pack"
#define FILE_DIR ".git/refs"
#define FILE_DIR ".git/refs/heads"
#define FILE_DIR "code"
#define FILE_DIR "code/controllers"
#define FILE_DIR "code/controllers/managers"
#define FILE_DIR "code/libraries"
#define FILE_DIR "code/libraries/rc5"
#define FILE_DIR "code/libraries/s_smiley"
#define FILE_DIR "code/libraries/swapmaps"
#define FILE_DIR "code/libraries/syntaxhighlighter"
#define FILE_DIR "code/libraries/test"
#define FILE_DIR "code/libraries/texthandling"
#define FILE_DIR "code/libraries/xml"
#define FILE_DIR "code/libraries/zipfile"
#define FILE_DIR "code/models"
#define FILE_DIR "code/models/chatter"
#define FILE_DIR "code/models/painter"
#define FILE_DIR "code/views"
#define FILE_DIR "code/views/color"
#define FILE_DIR "code/views/games"
#define FILE_DIR "code/views/help"
#define FILE_DIR "code/views/open_chan"
#define FILE_DIR "code/views/ops"
#define FILE_DIR "code/views/paint"
#define FILE_DIR "code/views/set"
#define FILE_DIR "code/views/set/style"
#define FILE_DIR "data"
#define FILE_DIR "data/saves"
#define FILE_DIR "data/saves/channels"
#define FILE_DIR "data/saves/logs"
#define FILE_DIR "data/sndfx"
#define FILE_DIR "data/xml"
#define FILE_DIR "data/xml/help"
#define FILE_DIR "data/xml/help/topics"
#define FILE_DIR "data/xml/help/topics/1"
#define FILE_DIR "data/xml/help/topics/1/1"
#define FILE_DIR "data/xml/help/topics/1/2"
#define FILE_DIR "data/xml/help/topics/4"
#define FILE_DIR "data/xml/help/topics/4/2"
#define FILE_DIR "data/xml/help/topics/4/3"
#define FILE_DIR "data/xml/help/topics/4/3/1"
#define FILE_DIR "data/xml/help/topics/4/3/4"
#define FILE_DIR "data/xml/help/topics/4/8"
#define FILE_DIR "data/xml/help/topics/5"
#define FILE_DIR "data/xml/ops"
#define FILE_DIR "data/xml/ops/privileges"
#define FILE_DIR "data/xml/ops/ranks"
#define FILE_DIR "data/xml/quotes"
#define FILE_DIR "resources"
#define FILE_DIR "resources/icons"
#define FILE_DIR "resources/icons/atoms"
#define FILE_DIR "resources/icons/paint"
#define FILE_DIR "resources/icons/smileys"
#define FILE_DIR "resources/images"
#define FILE_DIR "resources/images/hangman"
#define FILE_DIR "resources/images/interface"
#define FILE_DIR "resources/images/interface/arrows"
#define FILE_DIR "resources/images/interface/locks"
#define FILE_DIR "resources/images/menu"
#define FILE_DIR "resources/images/smileys"
#define FILE_DIR "resources/maps"
#define FILE_DIR "resources/notes"
// END_FILE_DIR
#define FILE_DIR "resources"

Expand Down
3 changes: 0 additions & 3 deletions code/_global.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@
// File Size Limit
#define MAX_FILE_SIZE 5242880 // 5 Megabytes

// telnet echo ON
#define VERBOSE 1

// Used to enable debugging output with debug()
#define DEV_DEBUG

Expand Down
28 changes: 12 additions & 16 deletions code/client.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,15 @@ client


Command(command)
if(ChatMan.istelnet(key) && VERBOSE) //verbose
src << "<font color='purple'>[command]</font>"

var pos = findtext(command, " ")
var cmd = copytext(command, 1, pos)
var params
if(pos) params = copytext(command, pos + 1)
for(var/v in mob.verbs)
if(ckey(cmd) == ckey(v:name))
call(mob, v:name)(params)
..(command)

verb
who()
var /mob/chatter/c = mob
c.Chan.UpdateWho()
var/success=0
if(findtext(command,"/",1,2))
var/pos = findtext(command, " ")
var/cmd = copytext(command, 2, pos)
var/params
if(pos) params = copytext(command, pos + 1)
for(var/v in mob.verbs)
if(ckey(cmd) == ckey(v:name))
call(mob, v:name)(params)
success=1
if(!success) call(mob, "Say")(command)
..(command)
12 changes: 1 addition & 11 deletions code/controllers/managers/gameman.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,12 @@ GameManager

UpdateWho(Channel/Chan)
if(!Chan || !Chan.players || !Chan.players.len) return
//telnet update who
var chatter_array[] = list()
for(var/mob/chatter/C in Chan.players)
chatter_array += "[dd_replacetext(C.name, " ", "+")][C.afk ? "~" : ""]"
var display = dd_list2text(chatter_array, ",")


for(var/mob/chatter/C in Chan.players)

var/players = 0
var/idle = 0

if(ChatMan.istelnet(C.key))
C << ".who [display]"

else
if(!ChatMan.istelnet(C.key))
for(var/i=1, i<=Chan.players.len, i++)
var/mob/chatter/c = Chan.players[i]
if(C.client) winset(C, "games_who.grid", "current-cell=1,[i]")
Expand Down
24 changes: 8 additions & 16 deletions code/models/channel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ Channel
if(C.show_title)
if(C.show_colors)
C << output({"<span style='text-align: center;'><b>[TextMan.fadetext("##########################################",list("000000000","255000000","255255255"))]</b></span>
<span style='text-align: center;'><b><font color='#0000ff'>[world.name] - Created by Xooxer</font></b></span><span style='text-align: center;'><b><font color='#0000ff'>and the BYOND Community</font></b></span>
<span style='text-align: center;'><b><font color='#0000ff'>[world.name] - Created by Xooxer</font></b></span>
<span style='text-align: center;'><b><font color='#0000ff'>and the BYOND Community</font></b></span>
<span style='text-align: center;'><b>[TextMan.fadetext("Still the greatest chat program on BYOND!", list("102000000","255000000","102000000","000000000","000000255"))]</b></span>
<span style='text-align: center;'>Source available on the <a href='http://www.github.com/kevans91/Chatters/'>Chatters Repository</a>.</span>
<span style='text-align: center;'>Copyright � 2008 Andrew "Xooxer" Arnold</span>
Expand All @@ -196,7 +197,8 @@ Channel

else
C << output({"<span style='text-align: center;'><b>##########################################</b></span>
<span style='text-align: center;'><b>[world.name] - Created by Xooxer</b></span><span style='text-align: center;'><b>and the BYOND Community</b></span>
<span style='text-align: center;'><b>[world.name] - Created by Xooxer</b></span>
<span style='text-align: center;'><b>and the BYOND Community</b></span>
<span style='text-align: center;'><b>Still the greatest chat program on BYOND!</b></span>
<span style='text-align: center;'>Source available on the <a href='http://www.github.com/kevans91/Chatters/'>Chatters Repository</a>.</span>
<span style='text-align: center;'>Copyright � 2008 Andrew "Xooxer" Arnold</span>
Expand Down Expand Up @@ -256,21 +258,11 @@ Channel

UpdateWho()

//telnet update who
var chatter_array[] = list()
for(var/mob/chatter/C in chatters)
chatter_array += "[dd_replacetext(C.name, " ", "+")][C.afk ? "~" : ""]"
var display = dd_list2text(chatter_array, ",")


for(var/mob/chatter/C in chatters)

var/active = chatters.len

if(ChatMan.istelnet(C.key))
C << ".who [display]"

else
if(!ChatMan.istelnet(C.key))
for(var/i=1, i<=chatters.len, i++)
var/mob/chatter/c = chatters[i]
if(isnull(c))
Expand Down Expand Up @@ -478,11 +470,11 @@ Channel
for(var/mob/chatter/c in chatters)
if(!(c.ignoring(C) & CHAT_IGNORE))
if(!c.filter)
c << output("[c.ParseTime()] <font color=[C.name_color]>[C.name]</font> is now <b>AFK</b>. (Reason: [raw_msg])", "[ckey(name)].chat.default_output")
c << output("[c.ParseTime()] [c.show_colors ? "<font color=[C.name_color]>[C.name]</font>" : "[C.name]"] is now <b>AFK</b>. (Reason: [raw_msg])", "[ckey(name)].chat.default_output")
else if(c.filter == 1)
c << output("[c.ParseTime()] <font color=[C.name_color]>[C.name]</font> is now <b>AFK</b>. (Reason: [TextMan.FilterChat(raw_msg,c)])", "[ckey(name)].chat.default_output")
c << output("[c.ParseTime()] [c.show_colors ? "<font color=[C.name_color]>[C.name]</font>" : "[C.name]"] is now <b>AFK</b>. (Reason: [TextMan.FilterChat(raw_msg,c)])", "[ckey(name)].chat.default_output")
else
c << output("[c.ParseTime()] <font color=[C.name_color]>[C.name]</font> is now <b>AFK</b>. (Reason: [msg])", "[ckey(name)].chat.default_output")
c << output("[c.ParseTime()] [c.show_colors ? "<font color=[C.name_color]>[C.name]</font>" : "[C.name]"] is now <b>AFK</b>. (Reason: [msg])", "[ckey(name)].chat.default_output")
C << output("Your activity status is now set to Away From Keyboard.", "[ckey(name)].chat.default_output")


Expand Down
84 changes: 56 additions & 28 deletions code/models/chatter/commands.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ mob
if("unban") voteUnban (privilege, Rank, target)

Send(target as text|null|mob in Home.chatters, file as file|null)
if(telnet) return
if(!target)
target = input("Who would you like to send a file to?", "Send File") as text|null
if(!target) return
Expand Down Expand Up @@ -63,34 +64,27 @@ mob
C.Ignore(name,"files")
alert("File ([file]) rejected by [C.name].","File Transfer Failed")

login(telnet_key as text|null)
set hidden = 1
if(!telnet_key) return
if(!telnet) return
var/savefile/S = new("./data/saves/tel.net")
if(!S || !length(S)) return
var/list/L = new
S["telnet"] >> L
if(!L || !L.len) return
var/key_hash = md5(telnet_key)
if(key_hash in L)
var/telnet_pass = input("Please enter your telnet password:", "Telnet Key Login") as password|null
if(!telnet_pass)
del(L)
return
if(L[key_hash] != md5(telnet_pass))
del(L)
return
del(L)
name = telnet_key
fade_name = name
Home.UpdateWho()

Set()
if(telnet) return
call(usr, "ShowSet")()

Help()
ShowHelp()
if(!telnet) ShowHelp()
else
src << {"//--------------------Help--------------------\\
All input is, by default, parsed into the chat. Input preceded by a backslash (/), up to the first space, will be interpreted as a command. If none is found, it shall be parsed into the chat.

Valid Commands:
<b>Login name</b> - Attempts to login as \[name\].
<b>Say message</b> - Sends message to chat.
<b>Me/My emote</b> - Emotes: "\[Name\] \[emote\]!" / "\[Name\]'s \[emote\]!"
<b>Who</b> - Displays list of current chatters.
<b>Fiter state</b> - Toggles the swearing filter. Valid states: on, off, 1, 0. All others simply toggle the filter.
<b>Ignore/Unignore chatter</b> - Ignore or stop ignoring specified chatter.
<b>Ignoring</b> - Displays list of ignored chatters.
<b>Look</b> - Displays information about the room.
\\---------------------------------------------//
"}

Cmail()
//ShowChattersMail()
Expand Down Expand Up @@ -119,6 +113,7 @@ mob
Chan.My(src, msg)

IM(target as text|null|mob in Home.chatters, msg as text|null)
if(telnet) return
if(!target)
var/Messenger/im = new(src)
im.Display(src)
Expand Down Expand Up @@ -500,7 +495,7 @@ mob


LookAt(t as text|null|mob in Home.chatters)
if(!t) return
if(!t || telnet) return
var/mob/chatter/C
if(ismob(t)) C = t
else C = ChatMan.Get(t)
Expand All @@ -527,6 +522,7 @@ mob
winset(src, "profile.im_button", "command='IM \"[C.name]\"';")

ShowCode(t as text|null|mob in Home.chatters)
if(telnet) return
if(afk) ReturnAFK()
var/showcode_snippet/S = new
if(t)
Expand Down Expand Up @@ -556,8 +552,8 @@ mob
S.Send(1)

ShowText(t as text|null|mob in Home.chatters)
if(telnet) return
if(afk) ReturnAFK()

var/showcode_snippet/S = new
if(t)
var/mob/chatter/C
Expand Down Expand Up @@ -586,7 +582,7 @@ mob
S.Send()

afk(msg as text|null)
if(!Chan) return
if(!Chan || telnet) return
if(!afk)
if(!msg) msg = auto_reason
Home.GoAFK(src, msg)
Expand All @@ -596,4 +592,36 @@ mob
switch(ckey(msg))
if("on","1") filter=2
if("off","0") filter=0
src << "Filter set [msg]"
else filter=(!filter && 2)
src << "Filter is now [filter ? "on" : "off"]."

who()
set hidden = 1
if(!telnet) return
var chatter_array[] = list()
for(var/mob/chatter/C in Home.chatters)
chatter_array += "[C.name][C.afk ? "\[AFK\]" : ""]"
src << "<b>Chatters:</b> [dd_list2text(chatter_array, ", ")]"

login(telnet_key as text|null)
set hidden = 1
if(!telnet_key || !telnet) return
for(var/mob/chatter/C in Home.chatters) if((C.key && C.key==telnet_key) || C.name==telnet_key) return
var/savefile/S = new("./data/saves/tel.net")
if(!S || !length(S)) return
var/list/L = new
S["telnet"] >> L
if(!L || !L.len) return
var/key_hash = md5(telnet_key)
if(key_hash in L)
var/telnet_pass = input("Please enter your telnet password:", "Telnet Key Login") as password|null
if(!telnet_pass)
del(L)
return
if(L[key_hash] != md5(telnet_pass))
del(L)
return
del(L)
name = telnet_key
fade_name = name
Home.UpdateWho()