• Hello everyone! If you would like to become an official Kush member in our discord and get some awesome perks or just wish to join our monthly raffles head on over to our Patreon see link below. Signing up helps us out a lot, also like to say welcome to the site and poke around! -KushGames

Karana (x3 XP, Bots, Speed) Server.


Staff member
We have picked up hosting and support for the Karana (x3 XP, Bots, Speed) EQEMU Server.

---> Allakhazam! <---

--->Character Browser <---

View attachment 29

BOTS and Commands

How to create a bot group ^bg
1) First Create a bot using ^botcreate NAME class race male/female
Example: ^botcreate Champ 1 1 1 - You just created A male Warrior named Champ!
Use ^botspawn Champ to spawn him
2) Next, We need set a leader of the a new Bot group. Target Champ and hit ^bgcreate BOTGROUP
Champ is now the bot group leader of BOTGROUP!
3) Now, Lets get his team together. Create a healer ^botcreate Healz 2 1 1 and spawn using ^botspawn Healz
4) Lets add Healz to Champs group. Target Champ
5) While Champ is targeted, type ^bgadd Healz
You just added Healz to Champ's group
6) How do you spawn the group? use ^bgload BOTGROUP
You just spawned the whole group! congrats
Repeat 3-5 to keep adding members to the BOTGROUP with leader Champ.

Other useful Bot Commands:
^attack spawned - Bots attack that target!
^camp spawned - Bots go ahead and camp, I'm done with you

Full Bot Command List

I've Killed Rello**** and I got an Epic 2.0 Augment, why can't I apply it? See list below.. I didn't want to limit by the class because you will want to Aug an Epic 2.0 for your bots. SEEEE there's a method to the madness.
Bard - Vesagran Shard of the Ancients
Beastlord - Spiritcaller Shard of the Ancients
Berserker - Vengeful Shard of the Ancients
Cleric - Divinity Shard of the Ancients
Druid - Brambles Shard of the Ancients
Enchanter - Eternal Shard of the Ancients
Magician - Primal Shard of the Ancients
Monk - Transcended Shard of the Ancients
Necromancer - Deathwhisper Shard of the Ancients
Paladin - Nightbane Shard of the Ancients
Ranger - Aurora Shard of the Ancients
Rogue - Nightshade Shard of the Ancients
Shadowknight - Innoruuk's Shard of the Ancients
Shaman - Heyokah Shard of the Ancients
Warrior - Kreljnok's Shard of the Ancients
Wizard - Power Shard of the Ancients

Karana Files Below

spells_us.txt / BaseData.txt / SkillCaps.txt / <-- Right click and save link as... Then choose to save Into your EQ client directory.

Thanks to:
Last edited:


Staff member
Link is dead(well not finished at least), Could use a description of the server details. I'm unsure what "speed" refers to in the server name.


New member
Any idea if this is connected in any way to the Karana server formerly run by DougleDragon? I played there and had a ton of toons, none of which show up here. So, just wondering.


Staff member
Hello and welcome, Am sure it's the same DB we it's now in the hands of Kush I know we have some old players returning and we are about to get another admin to support it, so you are in the right place for sure. Kick your shoes off and bare with us while we get things fix and sorted.
Glad you picked up Karana! ;)
Good luck man.
Edit,.. just saw above.. Speed has to do with run speed.. i upped it in the original db similar to Jboots.... I'll update the weebly site to link to this board.


Staff member
Change Log 11/6/2019

Bot AI and Command Changes
  • Added two new 'Owner Option' features:
    1. altcombat - enabled, bots aggro based on owner's attack state; disabled, pet-like behavior
    2. autodefend - enabled, bots defend owner on aggro; disabled, no action taken
  • Renamed bot command ^hold to ^suspend (same action and counter to ^release)
  • Repurposed bot command ^hold to override all attack actions
  • Reworked ^guard to allow all 'normal' actions and for bots to return to their guard spots when idle
  • Bot command ^attack should now work as intended - with noted exceptions above
  • Revamped bot command ^pull:
    1. Pulling bot will travel to entity, gain aggro, then return to home position
    2. Aggro is attained through the use of the low-damage spell 'Throw Stone'
    3. Pulling candidacy is currently determined by a 4-tier ranking system


Staff member
Not sure what you mena taken out the the trash haha. But you can always download it from this site. If it needs upgrading we'll update this page.


Staff member
  • Added getitemname(item_id) to Perl/Lua.
  • Added getspellname(spell_id) to Perl/Lua.
  • Added gettaskname(task_id) to Perl/Lua.
  • Added CheckInstanceByCharID(instance_id, char_id) to Perl/Lua.
quest::CheckInstanceByCharID(instance_id, char_id);
eq.check_instance_by_char_id(instance_id, char_id);
  • Added a new field (always_aggro_foes) to npc_types. If non-zero, the npc/mob will always aggro foes regardless of intelligence or level. This was so mobs such as the int casters in Befallen, who will agro their enemies regardless of level and I didn't want to have to reduce the _int field of INT caster NPCs to achieve the aggro.
Monk Bot Changes
  • Added a 'monk' class special attack timer to class NPC
  • Monk bots will now use the ability Tiger Claw on a seperate timer from the other disciplines - resulting in an additional attack
  • Bot usage of Master Wu's Technique now falls inline with current client behavior (rules and all)
  • Added bot owner option monkwumessage to toggle a notification message to the bot's owner whenever MWT triggers (off by default .. use ^oo monkwumessage to enable/disable)
Special Note:
By default, all classes process class attacks based on active timers. This involves checking attackability of target with every call - which is VERY expensive when done every server processing cycle since the timer is always 'ready.'
I added code to disable 'class' timers in classes that don't use them or are inactive because they don't have a skill. Class-based timers will not reactivate..but, skill-based ones will once a CalcBotStats call is made during the 'leveling' process. (If the skill is not available after leveling, the timer will disable itself again.)
Hopefully, this will help reduce bot cpu usage.
Please report any issues on our forums or in Discord - Thanks!
Auto Consent Implemented with Group / Raid / Guild Consent
  • Auto Consent client options are now supported. Toggling these options results in consenting (or denying) a player's current corpses.
    • These options are now also saved and restored for characters.
  • The /consent and /deny commands for group, raid, and guild are now implemented. These commands are not case sensitive.
    • /consent group - adds current group id to all character corpses
    • /consent raid - adds current raid id to all character corpses
    • /consent guild - adds current guild id to all corpses and updates db
    • /deny group|raid|guild - sets the consent type id to 0 on all corpses
  • Consent and deny commands are throttled to once every two seconds
  • When consenting a player by name, both the corpse owner and the player being consented receive a message for every (loaded) zone a corpse is in.
  • Corpses now store the list of consented player names. Previously clients stored a list of players they could drag corpses for.
Guild consent is persistent. The character_corpses table has a new guild_consent_idcolumn which is updated when a player issues a guild consent command. This means guild consented corpses may be dragged by guild members after a corpse is loaded (summoning the corpse to another zone or loading the corpse in a previously unloaded zone)
Group and raid consent are not persistent. Corpses will lose these consents when a corpse is summoned or if the corpse is loaded by a zone after consent was issued.
The handlers for EVENT_COMMAND and EVENT_BOT_COMMAND have been updated to allow a 'no change' behavior.
Script files using these event types will perform as before without the need to move the command scripting into them .. so long as there is no defined function for them.
Once a definition is given, the old method of using EVENT_SAY to handle them will no longer work and the new formatting must be applied.
If you have any questions, please direct them to our forums or the #support-quest-scripts channel in discord.
Character Soft Deletes
Unless new system rule Character:SoftDeletes (default: true) is disabled, characters will now no longer hard delete from all respective character tables and will only be marked as deleted via the newly created deleted_at column that can be found in the character_data table. This can make it far easier to recover accidentally deleted characters

  • EVENT_COMMAND now processes its own code and is no longer shared with EVENT_SAY
  • EVENT_BOT_COMMAND was added..but, will have limited functionality until more of the Bot class is exposed in the scripting apis
  • Both event types have new or updated entries on the Events page
  • In the template scripts, just replace the example command data with your own
  • Perl: "command_name" => [<status_required>, "command_description"]
  • Lua: ["command_name"] = {<status_required>, "command_description"}
  • Anything in the command_data hash will be automatically parsed upon any #help call - to include partial matching criteria
  • The same is true for bot_command_data
  • These templates are not required for use..but, do provide a basic 'use' structure so that command coding is simplified and easier to implement
  • Older 'say' command code may still work as-is..though, it has not been tested
World CLI Interface Overhaul
  • We've added a CLI interface to the world process which can be handy for various things, such as showing build version, database schema, database version or other utility things like setting account status. This feature is built in such a way that makes it easier for the development team to also add other commands in the future
  • Added an internal single source of truth for where we maintain our database schema for different types of tables. These lists will be significant for things like export/import commands, future plans for multi-tenancy etc.
    • Player Tables
    • Content Tables
    • State Tables
    • Server Tables
    • Login Tables
  • CLI Interface Changes
    • Commands that used option flags are arguments are now proper arguments as shown in examples. This is reflected in the Loginserver CLI as well and the documentation has been changed to reflect
      • Old
        • ./world database:set-account-status --name=* --status=*
      • New
        • ./world database:set-account-status {name} {status}
        • ./world database:set-account-status myaccount 255
eqemu@9044748fdbe2:~/server$ ./bin/world --help
> EQEmulator [WorldServer] CLI Menu
database database:schema Displays server database schema database:set-account-status Sets account status by account name database:version Shows database versionworld world:version Shows server version
Fixes and New Bot Command
  • Fix for pets breaking mez during combat
  • Fix for bot classes having skills they should not
  • Added bot command itemuse
    • This command will cause spawned bots to report if they can use the item which you currently hold on your cursor
    • To use this command, simply pick up an item and type ^itemuse
    • All spawned bots will check their inventories based on the items 'Slots' property and report that it is usable by them (no report if not usable)
    • Each bot will give a report for each eligible slot
    • To give the item to any reporting bot, simply click the text link with their name in it
    • This will invoke the inventorygive command using ^inventorygive byname botname
    • All rules governing use of the bot command inventorygive apply
    • You may also use the optional argument ^itemuse empty to have bots only report empty inventory slots that can use it
New Bot Command Option ^follow chain
  • This command will affect a chain follow effect, starting with the bot owner
  • All spawned bots will be included in this follow order unless they have previously been issued a follow command
  • The chain processing will skip all bots with the manual_follow flag set
  • This flag may be removed by issuing a ^follow reset on the affected bot or bots
  • The flag is temporary and is reset upon camping or zoning
New Bot Commands and Owner Option
  • Added bot command applypoison
    • This will apply item type 42 poisons (rogue-crafted) to an owner's targeted rogue bot's weapon
    • Class and level restrictions are observed
    • The application chance is the same as that for rogue players attempting to apply poison
    • To apply, simply place the poison on your cursor and type ^applypoison
    • You will receive a success/fail message and the item will be consumed in both cases
    • This effect remains active during the time in zone - just like a player's poison application
  • Added rule Bots:AllowApplyPoisonCommand to allow the command to be enabled or disabled per server admin's needs (default is true)

  • Added bot command applypotion
    • This will apply item type 21 potions to any bot targeted by its owner
    • Class, race and level restrictions are observed
    • Potion-type rogue poisons must be applied using this command
    • Casting time requirements are currently bypassed - expect a change in behavior at some point
    • To apply, simply place the potion on your cursor and type ^applypotion
    • You will receive a success/fail message and the item will be consumed in both cases
    • This effect is retained as a 'casted buff' and will remain until expired or removed
  • Added rule Bots:AllowApplyPotionCommand to allow the command to be enabled or disabled per server admin's needs (default is true)
  • Added rule Bots:RestrictApplyPotionToRogue to allow a restriction of applypotion to rogue-only potions (i.e., poisons) (default is true)

  • Added bot owner option buffcounter
    • When enabled, any bot buff with a counter will display a marquee message indicating how many 'hits' remain

Note: Bot owner option deathmarquee messages have been changed to red in color.

In order to get potion effects to work properly after zoning or camping, I had to borrow code from the client connection handler.
It's unknown whether this code helps in the case of bots recasting buffs upon zoning and spawning..but, I did notice the lack of rebuffing in many cases - will watch!

Changed Bots:AAExpansion to Bots:BotExpansionSettings
  • Changed this rule property from an enumerated value to a bitmask
  • Renamed rule to coincide with the property change
  • Works the same as World:ExpansionSettings in regards to active expansions (defaults to 16383 - same as the world rule)
  • Added code to bot aa assignment to honor the per-expansion restrictions
  • This rule may be expanded in the future to other bot-related systems
New Command #nudge
  • Added command nudge to facilitate npc placement and orientation
  • Command accepts up to 4 arguments (x,y,z,h) and may use any combination, in any order
  • Acceptable values are float-type for all parameters
  • Values are interpreted as offsets and not absolute values
  • Adjustments are 'set' by applying the command #fixnpc
  • This command is ideally suited for macro (hotkey) use
  • Real-time updates are broadcast to clients..but, there may be 'visible' glitches if you try to use the command too fast (limited by packet broadcast timer)
  • Examples of use:
    • #nudge x=1.00 y=-1.00 z=3.45 h=-11.38
    • #nudge x=2.33 z=-1.01
    • #nudge h=133.00 z=-12.34
  • Added the new event EVENT_COMBINE_VALIDATE
  • This event is processed as the very last step in a tradeskill combine process just before the actual combine action
  • Its use is automatic and criteria may be added to the global_player file for whichever scripting api that you are using
  • The initial candidate for special validation is tradeskill recipe #10344 - "Clockwork Scout Module"
function event_combine_validate(e)if (e.recipe_id == 10344) thenif (e.validate_type:find("check_zone")) thenif (e.zone_id ~= 289 and e.zone_id ~= 290) thenreturn 1;endendend
return 0;end
  • For this recipe, the combine is only allowed in two zones, tipt and vxed
  • The active recipe id will always be passed by integer as the variable recipe_id
  • In this case, the active validation_type of check_zone, the current zone id will be passed by integer as the variable zone_id
  • From there, a simple check against valid zones can be made
  • Invalid zones will return a non-zero value resulting in a failure to validate the combine..hence, cancelling it
  • Valid zones will return a zero value and allow the combine to occur normally
  • The validation types can be expanded
  • This initial implementation is to alleviate a current bug
Note: This change requires a quest update to capture the new global player files, or the changes may be added manually.

Fix for client positions upon entering or exiting a boat
Ok, well... when I do the veteran buffs now, 2 of them shows as unknown spells, where before I updated the spells it showed correctly.. haha
I updated the OP for the newest files Please be sure to update all three you should be good now.
I dunno bro, I downloaded all 3, made sure the files were not blocked because they were from another PC.. all is good, but when I get the vet buffs, it still says, "You feel bogus after being accosted by an unknown spell" and I get 2 "unknown spell" icons up in the buff window.
Maybe my PC just doesn't like the changes? lol
ok, swapped out the spells file with mine from PEQ and its the vet buffs Blessings of the Devoted and Armor of Experience IV that are coming up as unknown with the updated spells file. Something about the spells file isn't working for me. What all is server only for the file?


Staff member
Those 3 files where pulled fresh from Karana Server so they should work, but we can look into it I need to install and test it out also.

I'll ask our Dev about it.
ok, well.. I THINK I figured out why my PC doesn't want to read it. Those are both the spell files, My PC cant read another language lol. Top left is from PEQ, bottom right is the one I downloaded.