nytmyr bdf5f8b4a3
[Bots] [Quest API] Add ^clickitem, ^timer, fix GetBestBotSpellForCure (#3755)
* [Bots][Quest API] Add ^clickitem, ^timer, revamp bot timers, fix GetBestBotSpellForCure

This adds the command **^clickitem** for bots.
Bots can click items they are wearing with the provided slot ID, players can use **^invlist** on their bots to see items and slot IDs.
This supports actionables.
**^itemclick 13 byclass 11** would command all Necromancer bots to attempt to click their Primary item.

This adds and supports charges for items to bots, when an item is used, it will lose a charge and cannot be clicked once no charges remain.

This adds the following rules:
**Bots, BotsClickItemsMinLvl** - Minimum level bots can use **^clickitem**.
**Bots, BotsCanClickItems** - Whether or not **^clickitem** is allowed for bots.
**Bots, CanClickMageEpicV1** - Whether or not players are allowed to command their bots to use the Magician Epic 1.0

This adds quest methods to Perl/Lua for:
ClearDisciplineReuseTimer, ClearItemReuseTimer, ClearSpellRecastTimer
GetDisciplineReuseTimer, GetItemReuseTimer, GetSpellRecastTimer
SetDisciplineReuseTimer, SetItemReuseTimer, SetSpellRecastTimer

Discipline and Spell methods use the spell_id to check, get and set. Item uses the item_id.
Clear and Get support wildcards (no spell/item id) to clear all timers of the type or get the first timer of the type.
Get will return the remaining time on the chosen timer, if any.
Set supports a wildcard (no recast/reuse provided) to use the default of the provided type, you can also specify a recast/reuse timer to set that timer to the chosen value.

**^timer** has been added as a bot command, defaulted for GM access.
This can be used to set, get and clear timers of different types. Use **^timer help** for info.

This revamps the way timers are set, stored, loaded for bots.

**GetBestBotSpellForCure** was previously checking only the first spell found and not properly iterating through the checks.

This requires modifications to the **bot_timers** table and is included in this commit.

* Rebase Conflicts

* Update queries to use repositories

* Minor adjustment

* Formatting

* Handle delete as well

* Cleanup.

* Adjust primary keys to prevent conflicts

---------

Co-authored-by: Akkadius <akkadius1@gmail.com>
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
2023-12-17 14:53:34 -05:00
2019-10-13 18:49:16 -07:00
2018-08-04 15:26:21 -04:00
2013-02-16 15:00:23 -08:00
2019-05-17 00:18:32 -07:00
2023-12-16 01:07:19 -06:00
2021-09-09 09:52:26 -05:00
2023-12-16 01:07:19 -06:00
2019-08-15 20:21:09 -05:00

EQEmulator Core Server

Drone (Linux x64) Drone (Windows x64)
Build Status Build Status

EQEmulator is a custom completely from-scratch open source server implementation for EverQuest built mostly on C++

  • MySQL/MariaDB is used as the database engine (over 200+ tables)
  • Perl and LUA are both supported scripting languages for NPC/Player/Quest oriented events
  • Open source database (Project EQ) has content up to expansion OoW (included in server installs)
  • Game server environments and databases can be heavily customized to create all new experiences
  • Hundreds of Quests/events created and maintained by Project EQ

Server Installs

Windows Linux
Install Count Windows Install Count Linux Install Count

> Windows

> Debian/Ubuntu/CentOS/Fedora

  • Install Guide

  • You can use curl or wget to kick off the installer (whichever your OS has)

curl -O https://raw.githubusercontent.com/EQEmu/Server/master/utils/scripts/linux_installer/install.sh install.sh && chmod 755 install.sh && ./install.sh

wget --no-check-certificate https://raw.githubusercontent.com/EQEmu/Server/master/utils/scripts/linux_installer/install.sh -O install.sh && chmod 755 install.sh && ./install.sh

Supported Clients

Titanium Edition Secrets of Faydwer Seeds of Destruction Underfoot Rain of Fear

Bug Reports

  • Please use the issue tracker provided by GitHub to send us bug reports or feature requests.
  • The EQEmu Forums are also a place to submit and get help with bugs.

Contributions

  • The preferred way to contribute is to fork the repo and submit a pull request on GitHub. If you need help with your changes, you can always post on the forums or try Discord. You can also post unified diffs (git diff should do the trick) on the Server Code Submissions forum, although pull requests will be much quicker and easier on all parties.

Contact

Resources

Other License Info

  • The server code and utilities are released under GPLv3
  • We also include some small libraries for convienence that may be under different licensing
    • SocketLib - GPL LibXML
    • zlib - zlib license
    • MariaDB/MySQL - GPL
    • GPL Perl - GPL / ActiveState (under the assumption that this is a free project)
    • CPPUnit - GLP StringUtilities - Apache
    • LUA - MIT

Contributors

Description
Languages
C++ 89.6%
C 6.4%
C# 2%
CMake 0.6%
Python 0.5%
Other 0.8%