A minimalist approach to ISBoxing EQ
You might call this a Like-A-Lazy-Person method, as opposed to Like-a-Pro. Like-A-Pro methods are impressive, but for me at least the initial setup seems daunting. I have found it possible to box with moderate effectiveness with much less up-front configuration work.
I'm not especially proud of my boxing. My guild discourages boxing on raids, so I've not done much of that. For off-raid activity I depend heavily on mercenaries. I'm boxing a limited set of classes and not using even those to maximum effect. I have used but a fraction of the powerful features available in ISBoxer. As I said to Lax in a recent conversation, my configuration is primitive.
Nevertheless, it works for me, and I thought I would explain how I set things up. It might help another intimidated beginner.
At the least it may give more sophisticated boxers something to chuckle over.
Comments and suggestions are welcome.
---------------------
First let's talk about character sets and getting your accounts loaded.
I have 8 accounts with 30+ characters that I play in a variety of configurations, sometimes spread across multiple networked computers.
Usually I have all 8 accounts loaded, though not all will be actively fighting. Typically several are doing odd jobs: foraging, fishing, buffing, porting a friend, making tradeskill combines, or just hanging around.
To get 8 accounts loaded, you need 8 character-set slots.
You can use a single 8-slot set and edit it as needed, dropping in new alts and exporting the changes whenever you want to play different characters.
Or you can avoid the on-going edits by making and exporting several different sets to support different selections of characters.
If you need to distribute the characters across multiple computers, the supported method is to split them into linked character sets, one per computer.
For reasons mostly historical and now mostly irrelevant, I chose a different method. I export a fixed set of several 8-slot character sets to all machines and launch individual slots where I want them. This way all characters from a given account always run in the same slot and have the same window name wherever they are launched. I use scripts to initiate all launches from my primary computer. I will explain more about this at the end, but this method of launching is not required for the boxing setup I am describing.
Once you have all accounts launched by any means, on one machine or on several, you can use broadcast/repeater as usual to guide them all through the login process simultaneously.
--------------------
To quickly swap out a currently running character for an alternate character:
A) Camp the current character to Character Select.
B) Tell InnerSpace about the change:
: Edit your character set (or linked sets) and export the change,
: Or
: Launch a different existing set (or linked sets) with the new configuration,
: Or
: Launch the individual slot from a different existing set which already
: has the desired new character in place.
:
: Innerspace will then display a message that the new character has been reloaded.
C) Select the new character and Enter Game.
That's a fast way to swap alternate characters, at least on your primary machine.
The "camp first, then change" sequence is needed to keep virtual files in sync with the characters.
Your eqclient file determines which character is selected by default at login, and contains a lot of potentially character-specific information such as key binds. If you change the character InnerSpace thinks is in the slot before you camp, you will over-write the incoming character's information with yours when you do eventually leave the game.
I have not implemented a way to automate selection of a new character from Character Select during a fast swap. If the characters involved are on networked machines and it is inconvenient to use their keyboards to select the new character, it may be easier to camp them to desktop, make the changes, and log in again.
---------------------
Now that all characters are loaded, let's talk about configuring them for boxing.
My general approach is to define a bank of "boxing combat keys" that are broadcast to ACTIVE characters.
ACTIVE is an ATG or "Action Target Group", explained in the next section. But it means what it sounds like.
Most keys go to ALL ACTIVE. Some, such as the ones for Assist and Follow, go to OTHER ACTIVE.
The keys are mapped in-game to a bank of Hotbar buttons, where Socials/Macros can define what each character is to do in response to that key. Some are also mapped to other specific actions.
I picked keys Alt-F1 through Alt+F12 because I was not using these much for normal play.
I mapped them to the buttons of HotBar 10, also because this was mostly unused on my characters.
I put these ISBoxer keys in a new keymap unimaginatively called MAP1, and added MAP1 to all character sets.
I also added MAP1 to the list of keymaps to be toggled off and on by Shift+Alt+m in the Always On map.
I defined a few other keys that go to everyone, not just ACTIVE characters. I'll talk about these later, along with more detail about the specific combat keys I've found useful.
----------------------
ACTIVE is an ATG, an "Action Target Group", containing the characters who currently should receive combat command keys. As opposed to idle characters such as mules and foragers and others that are not part of the combat action.
It starts out empty, and is populated as you set up groups to play.
One way to do this is to switch to each intended active character in turn to press a key to join ACTIVE.
Ctrl+F1 =join/leave ACTIVE to SELF. (a toggle)
However, I wanted to be able to control the ACTIVE membership from a single screen. So I defined:
Ctrl+F2 =LEAVE ACTIVE to ALL ACTIVE, to reset the group to a known initial empty state
And then I needed keys to tell specific characters to join ACTIVE.
To set this up I put all the characters from each account in a static ATG of their own.
Characters on the account I have in slot 1 are assigned to Account1.
Then the same for other accounts in turn to define Account2 through Account8.
Note that there can be at most one member of each account ATG online at a time.
Then I could define:
Alt+1 =JOIN ACTIVE to Account1
Alt+2 =JOIN ACTIVE to Account2
.
.
Alt+8 =JOIN ACTIVE to Account8
I think of these as slot or window actions, as each account is always assigned to a particular slot and window in my layout.
If I am in slot 1 and I want to play with slots 5 and 7, it takes just a second to tap Alt+1,5,7 to set this up.
It will be the same for you if you are using a single computer for all accounts, or if you are using my slot-launching methods for networked computers.
If you use linked character sets for a networked environment this convenient account=slot=window mapping is not preserved, since each computer starts over with its own slot1=is1 and there are no gaps for missing characters.
But Alt+1 through Alt+8 still work for adding characters to the ACTIVE group. Each Account ATG still uniquely identifies one of the 8 possible concurrently loaded characters. You just have to be aware of which account numbers the characters belong to, wherever they wind up positioned in your layouts.
I added a broadcast key for this ATG:
Ctrl+` =toggle BROADCAST to ACTIVE (That's the tilde, the key to the left of "1" on my keyboard)
This can be used the same ways as the regular broadcast key, except that you don't have to worry about affecting any non-active characters that are currently loaded. Since you can quickly change the ACTIVE membership, it also has oddball uses for broadcasting to any selected subset of your accounts, such as when re-logging a few crashed sessions while others are still in game.
------------------------
FORMING GROUPS
I add all wanted characters to ACTIVE with Alt+1 to Alt+8 as I set up the groups.
The characters I frequently use as leaders have in-game socials to invite common sets of groupmates.
Alt+i =ACCEPT INVITE, sends Ctrl+i to OTHER ACTIVE. Ctrl+i in game accepts a pending invitation.
Since ACTIVE membership controls the broadcast of the "accept" key, the socials can invite extra characters who are only sometimes wanted in the group. Only those in ACTIVE will accept the invitation.
None of my actions depend on group order, so I don't care about the order in which invitations are accepted.
-------------------------
ASSIST
Different characters may assume the MA (Main Assist) role for different purposes, so I do not want to hardcode assist names.
But for any particular purpose, the MA role tends to stay with one character after initial setup. I don't normally need to change this on the fly.
I do not understand the desire for an instant "assist me" key usable from any character, at least in EQ.
The MA can be changed quickly enough if needed, but it isn't automatic.
At first I used the in-game "assist group" function. But since I sometimes use outside groups, ASSIST needs to work for all ACTIVE characters, whether grouped with the MA or not.
So I set the MA name in the first slot of the Extended Target Window, XT 1.
Boxes can then have socials with:
: /xt 1 to target the MA. This happens instantly, not requiring a "/pause"
: as is needed for "/tar <name>" commands.
: /assist to assist the (currently targeted) MA. This is not instant, so you do need
: a "/pause" if followed immediately by something that uses the new target.
To set a name in XT 1 there are in-game key-mappable functions that I have mapped to k and shift+k on all characters.
k =Add Extended Target (puts the current target into the first unassigned extended target slot)
shift+k =Remove Last (assigned, non-auto) Extended Target
: (My cleric uses these all the time to set out-of-group tanks for healing when raiding.)
As with joining ACTIVE, one approach would be to switch to each character in turn during initial setup, and set the intended MA one by one.
But again, I would rather do it all from my primary character screen, which I can do using BROADCAST to ACTIVE:
: shift+k remove any existing assigned extended target.
: (keep pressing until extended targets are empty for all characters)
: /tar <MA name> have everyone target the MA.
: k have everyone add the MA as their first extended target.
The MA name is now in extended target slot 1 for everyone in ACTIVE, and will stay there until you remove it.
----------------------
AUTOFOLLOW
I am running the primary character who is the MA so my character name is in xt 1. Group follow uses that.
Alt+F =group follow MA, sends Alt+F to all other active.
: Implemented in game as:
: /stand
: /xt 1
: /follow
If I have active characters outside my primary group, they will get an error message about needing to target a group member. That's fine. I'll handle getting outsiders moved or following a different leader manually.
-----------------------
The full list of my current boxing keys:
Ctrl+F1 =toggle ACTIVE membership for current window
Ctrl+F2 =empty the ACTIVE group.
Alt+1-Alt+8 =add accounts(slots/windows) 1-8 to ACTIVE
Alt+i =accept invite, sends Ctrl+i->OTHER ACTIVE
Alt+F =Follow the MA, as discussed above.
Alt+F1 =WAKE UP, sends Alt+F1 to ACTIVE
: /stand
: /stance aggressive
: /stance balanced
: Some may be sitting to med, and mercenaries can switch to passive if there is a long wait between fights.
: At first I put ASSIST (/xt 1, /assist) here as well. But I do not like hitting 2 keys to call for attack.
Alt+F2 =ATTACK new mob, sends Alt+F2 to OTHER ACTIVE and Ctrl+8 to SELF
: Here each character does whatever is appropriate for initially attacking a new mob.
: Mages send in their pets, cast swarm pets, and at least one of them casts AA Malosinete debuff
: Bard turns attack on, casts boastful bellow, and clicks a drum that instant-casts chant of chaos
: Shaman may debuff and slow and perhaps cast some dots
: etc
:
: While it may be cleaner to keep ASSIST and ATTACK separate, I currently have ASSIST on this key.
: /xt 1
: /pause 6,/assist (depending on lag, this may need to use a longer pause)
: Then I can use the single ATTACK key for target switches in a series of fights when I know
: characters are already standing and mercs are active.
: I don't want the MA to try to assist himself, so I send Alt+F2 to OTHER active, not to all.
: The Ctrl+8 to SELF can trigger an attack without assist for the MA himself.
Alt+F3 =NUKE current mob, sends Alt+F3 to ALL ACTIVE
: This does whatever is appropriate for continued damage to current target.
:
: For casters, I multibind this key to cast the first 4 or 5 gems, plus activate a social.
: The social does /alt activates for AA instant nukes.
: I think people call this a "weave". It casts the first available spell,
: and if none are refreshed will try for available AA nukes.
:
: Bard can try Boastful Bellow, Selo's Kick, and that chaos chant click again.
: etc
: By this time all are attacking, and everyone should try to do more damage,
: so the MA can get the same key as the others.
Alt+F4 <unnasigned> Probably should put some "activate burn" key(s) here.
Alt+F5 <unnasigned> Or maybe something to refresh dots.
: Currently I flip to individual characters to do such things.
Alt+F6 =GROUP HEAL
: Obvious single cast
: Could be a weave if there are multiple group heals with different refresh timers.
Alt+F7 =DIRECT HEAL
: This again is a multicast/multibind/weave. Fast-cast remedies first, slower heals later.
: Casts the first available heal spell.
Alt+F8 =ASSIST for HEAL TARGET
: /xt 1
: /assist
This healing setup is simplistic. It assumes that healers do nothing but heal, so they need only to be given a heal target and will stay on it. That's perhaps reasonable for Clerics in many situations, but not for (eg) a Shaman healer who should routinely be doing things to mobs as well. I haven't focused much on this, because I mostly use Mercenary healers.
Alt+F9 <unnasigned>
Alt+F10 <unnasigned>
Alt+F11 <unnasigned>
Alt+F12 =EVAC
: I usually have a wizard or druid in group.
Alt+9 =INVIS
: Group invisibility.
: Since I usually have multiple casters, I have one cast regular invis and another
: invis to undead, with a "/pause 1" before the ITU to make them both land.
Ctrl+2 =COTH GROUP, sends Ctrl+2->ACTIVE
: Handy when I run off to set up a pull and get in trouble.
: Also just to get the group back together if I've wandered off on some of them.
I have a few keys that broadcast to all windows, whether ACTIVE or not, from any window:
Ctrl+1 =Forage/Fish/Cauldron ... whatever.
: I often have a character or two off collecting things for me, foraging or fishing.
: Mages may have this button set to click their "Cauldron of Countless Goods".
:
: For relevant characters, this will map to a social something like this:
: /autoinventory clear anything held on cursor
: /autoinventory
: /doability <n> or /useitem 23 <n> fish/forage/click item
Clicking this button when I think of it can painlessly gather useful stuff.
Ctrl+= =Record inventory in a file
: /outputfile inventory f:\eqchars\I-<charactername>.txt
: /outputfile realestate f:\eqchars\H-<charactername>.txt
:
For characters running on other than the main machine, the target drive for the files is a shared network drive on the main machine. So all the information winds up in one place.
I often have to look for items and am not sure where they are, or even whether or not I have them. These handy in-game commands list everything in simple text files.
Carried inventory, Equipped items, Banks, House storage... it's all there.
To find anything, I use a "findstr" command in a Command Window that searches all the .txt files in the directory where this stuff is stored. (Actually I use a .bat file to issue the command with less typing.)
Ctrl+- =Camp to Desktop
: Everyone out of the pool!
-----------------------------------------------------------------
That's about it for now.
============================================================================================================
Addendum: SCRIPTS
As mentioned above, I use scripts to simplify some aspects of my process. These are not .ISS scripts running under InnerSpace, but rather are batch files and AutoHotkey scripts executed from a Windows Command Prompt.
I developed this method when I was just starting, did not understand ISBoxer, and was trying to deal with a variable mix of boxing environments. I was bouncing daily between using a desktop at home with a laptop as secondary, and a cramped nursing home room where the best laptop became primary and a couple of others served as secondaries. It was driving me crazy trying to set up all the different linked character sets I seemed to need.
Now I play only from home and have a better desktop that can handle all 8 sessions. I also understand ISBoxer better. If I had started out this way I probably would never have developed this script-driven slot-launching approach. (I also might have focused on using more of what ISBoxer has to offer.)
However, it works quite well and I feel no need to drop it even though now I probably could do so. It still offers a few minor conveniences over driving everything from the ISBoxer GUI. And I use other utility functions from the Windows Command Prompt, so I always have that window open anyway.
-----
You need to issue "remoteuplink -connect <computername>" commands to get machines to talk when not using linked character sets.
Rather than typing that command at the InnerSpace console command line, I use:
: rlink <computername>
at a Windows Command Prompt.
Rlink is a DOS/Windows style batch file:
RLINK.BAT <computername> (rlink=RemoteupLINK)
01 @echo off
02 set rlink=%1
03 innerspace remoteuplink -connect %rlink%
Similar batch files support launching individual slots:
LC.BAT <characterset> <slot#> (lc=Launch Character)
01 @echo off
02 innerspace run isboxer -launchslot %1 %2
LRC.BAT <characterset> <slot#> (lrc=Launch Remote Character)
01 @echo off
02 innerspace relay %rlink% run isboxer -launchslot %1 %2
I use AutoHotkey scripts to launch multiple slots at once.
For example:
LOADALL.AHK
01 run innerspace.exe run isboxer -launchslot c1 1
02 WinWait is1
03 run innerspace.exe run isboxer -launchslot c1 2
04 WinWait is2
05 run innerspace.exe run isboxer -launchslot c1 3
06 WinWait is3
07 run innerspace.exe run isboxer -launchslot c1 4
08 WinWait is4
09 run innerspace.exe run isboxer -launchslot c1 5
10 WinWait is5
11 run innerspace.exe run isboxer -launchslot c1 6
12 WinWait is6
13 run innerspace.exe run isboxer -launchslot c1 7
14 WinWait is7
15 run innerspace.exe run isboxer -launchslot c1 8
16 WinWait is8
17 WinActivate is1
18 WinWaitActive is1
That's equivalent to launching the character set C1 from ISBoxer.
Except that I can choose to have the script launch some of the slots on remote machines, which is not supported in the current version of ISBoxer. And I can pick individual characters from different existing character sets, to launch a different combination without needing a character set with that exact combination. I have 7 character sets which among them contain every one of my 30+ characters. So I can launch any combination of characters on any configuration of networked machines, without having to change my ISBoxer configuration at all.
I can also write scripts to launch subsets of the total slots, defining sub-teams that are frequently swapped in together while leaving other characters in place.
There are other related utility commands that I've found useful:
REDRAW.AHK WinActivate all currently existing InnerSpace windows in reverse order.
: Useful when some of the windows get hidden, or all are in home slots and
: the one that should be active will not flip to the active region when clicked.
: I suppose the system thinks it is already there.
: Not sure why this happens, but once in a while it does.
TC.BAT (tc=Type Characters) types a grid showing all my characters by Character Set
: and Slot, since I sometimes forget where infrequently used characters reside.
Finally, some of my commands are conveniences not related to ISBoxer:
FT.BAT <itemtofind> [<filefilter>] Searches all the inventory dumps for all my characters.
01 findstr /I %1 f:\eqchars\*%2*.txt All my characters have a hotbutton/social to dump this information as described earlier.
: eg: ft indium.ore to find all the indium ore in any inventory, bank, or housing.
: ft indium.ore bare to limit the search to items in Bareldi inventory, bank, or housing.
FL.BAT <searchstring> [<filefilter>] to Find something in current Logs
01 findstr /i %1 d:\everquest\logs\eqlog_*%2*_povar.txt
: eg: fl bareldi.*slain bare to find all the times Bareldi has been killed recently
: fl slain.*bareldi bare to see what he has gotten the killshot on.
(I also use many other commands for things like log file management and lookups for Alt-activate numbers, but to get into those would be straying too far from the intent of this post.)
============= The End ===============================================================================