That's the kicker. In a fully stripped down form, that's it. I've checked for bracket issues, and it comes up fine - I've seen the havoc it creates when a bracket is missing, or added.
The code, in its near-entirety (Missing a list of CTCP commands, as I added them afterwards, and I know they're not causing a problem as such)
ON ^*:QUIT:%Daraolynn: {
if ($window(@ $+ %Daraolynn)) { $update_my_window(%Daraolynn) | aline -hp @ $+ %Daraolynn 2 $+ $nick has vanished from this plane. }
}
ON *:TEXT:!Speak*:#Daraolynn: {
if ($window(@Daraolynn)) {
if ($2 == %Location) { echo -mt @Daraolynn < $+ $3 $+ > $4- }
elseif ($2 == %Location $+ SYS) { echo -mt @Daraolynn 7[-] $3- }
}
}
ON *:ACTION:!Act*:%Daraolynn: {
if ($window(@ $+ %Daraolynn)) {
if ($2 == %Location) { echo -mtc action @ $+ %Daraolynn * $3- }
}
}
ON *:INPUT:@Daraolynn: {
if ($window(@Daraolynn)) {
if ($mid($1,1,1) = $chr(47)) {
if ($1 = /me) { describe #Daraolynn !act %Location %character $2- | echo -mtc action @Daraolynn * $nick $2- | halt }
if ($1 = /clear) { return }
if ($1 = /join) { return }
if ($1 = /nick) { return }
if ($1 = /go) { msg #Daraolynn !Moveto $2- | halt }
if ($1 = /wallet) { msg #Daraolynn !wallet | halt }
else { return }
}
else { msg #Daraolynn !Speak %Location %Character $1- | echo -mt @Daraolynn < $+ %Character $+ > %Playername $1- }
}
}
ON *:CLOSE:@Daraolynn: { msg #Daraolynn %Location $+ SYS %Character has departed the realm. | window -w #Daraolynn | part #Daraolynn | unset %Location | unset %Character }
alias Emulate_window {
if ($window(@Daraolynn)) { echo -a 4Error: please close @Daraolynn before trying to run the window emulator again. }
else {
if (!$1) { set %Daraolynn #Daraolynn }
else { set %Daraolynn $1 }
}
}
alias update_my_window {
; It has been found that IRC scripts are actually faster than the channel windows themselves can update. This is
; to slow it down a tick in order for everything to work right.
.timerUpdateTheWindow $+ $rand(a,z) $+ $rand(1,100) 1 1.2 /update_emulated_window $1
}
alias update_emulated_window {
; Wipe out all the current list
dline -l @Daraolynn 1-
; Locate all the Ops
var %i 1
while (%i <= $nick($1, 0)) {
set %nick $nick($1, %i)
if (%nick == $null) { inc %i }
if (%nick isop $1) { aline -l @Daraolynn 7 $+ %nick | inc %i }
else { inc %i }
}
; NPC information
aline -l @Daraolynn 14NPCs
; This stuff will have to wait until a bot is made to send a list of NPCs to this client. Then it can use
; tokens to go through the list.
var %i 1
while (%i <= $nick($1, 0)) {
set %nick $nick($1, %i)
if (%nick == $null) { inc %i }
else {
if ((%nick isvoice $1) || (%nick isop $1)) { inc %i }
else { aline -l @Daraolynn 14 $+ %nick | inc %i }
}
else { inc %i }
}
unset %nick
return
}
alias -l check_nick_in_chan {
; This checks to see if the person who changes his/her nick is actually in the emulated channel.
; If not, it ignores the change. If so, it'll show up and update the nick list.
if (($nick($1, $2) = $null) && ($nick($1, $3) = $null)) { halt }
else { return }
}
menu @Daraolynn {
SNARK:/echo -a This is not finished.
}
alias name.on.list { return $line(@Daraolynn,$sline(@Daraolynn,1).ln,1) }
ctcp *:player_information*:*: {
set %character.name $2 | set %character.description $3- | dialog -md Character_Information Character_Information | unset %character.description | unset %character.name
}
I'm pretty sure I've got a few cases in which there are "%Daraolynn"s still in there from when I first got the script. Many of these commands aren't used in what I'm testing at this point, or haven't been converted yet, so I'll figure that out myself. No need to point those mistakes out unless it's the cause.
The idea is that this will join a channel, hide the channel, create this window, and then, depending on info given from the main bot or other users of the script, either show that info, or not. The main reason it's a custom window instead of just a normal one is that I'm using the listbox to
A) Hide the bot. No particular reason.
B) Make the organization a little better.
C) Allow me to include NPC names as people in the nicklist.
D) I plan on eventually making it so the character name will show up in the box, instead of the user name. Should be easy enough to do - in theory.