# Notes
- Cleanup messages and logic.
- Add a confirmation so operators don't accidentally shutdown the zone they're in thinking this is `#worldshutdown` instead.
* [Commands] Cleanup #appearance Command
# Notes
- Cleanup messages and logic.
- Cleanup appearance type constants to use a namespace with constexpr instead.
- Cleanup animation constants to use a namespace with constexpr instead.
* Update emu_constants.cpp
* Cleanup
# Perl
- Add `$client->ClearXTargets()`.
# Lua
- Add `client:ClearXTargets()`.
# Notes
- Add `#clearxtargets` command for players.
- Allows operators/players to clear their XTargets if something get stuck on it.
* [Languages] Cleanup languages constants
# Notes
- Cleanup formatting and logic where necessary.
- Cleaned up constants to use a namespace with `constexpr` instead.
- Changed `LoadCharacterLanguages` to use a repository instead.
* Lua GroupMessage uint8/language_id
* Lua More uint8/language_id
* [UCS] Consolidate configuration block
* Update eqemu_config.cpp
* Single indent config
* reload config internally
* Make sure port is a string to be consistent with previous fields
* Move conversion logic to function CheckUcsConfigConversion
Bots were not casting the highest level spell with ^resist. Base_value was being used to compare resist spells, but this is typically the same value for all resist spells. This fix should be easier than calculating the caster bots level adjusted "resist_total".
* [Crash] Fix a crash where a raid invite could be accepted affter joining a group with the invitor.
* [Crash] Fix a crash where a raid invite could be accepted after joining a group with the invitor.
# Perl
- Add `$client->HasItemOnCorpse(item_id)`.
# Lua
- Add `client:HasItemOnCorpse(item_id)`.
# Notes
- Allows operators to see if a player has an item on any of their corpses.
- May need to address having to allocate and deallocate memory for every corpse that could possibly exist for a player.
* [Cleanup] Gender constants cleanup
# Notes
- Convert to a `Gender` namespace using `constexpr`.
- Cleanup spots where we were using magic numbers for gender values.
* Cleanup
* [Cleanup] Delete errmsg.h in common and zone
# Notes
- These files were mostly unused.
- Moved the stuff that was used to the `dbcore.h` file since it's already used.
* Remove references
* [forage rule feature] add a rule to disabled using common_food_ids from the list in forage.cpp. currently set to enabled.
* NPC database emotes now supports basic variables. More than one variable can be used at a time.
* Format manifest
* Formatting
* Formatting
* Formatting
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Cleanup] Consolidate GetHateRandomBot(), GetHateRandomClient(), and GetHateRandomNPC()
# Notes
- These were separate methods and duplicated a lot of code, consolidated into the singular method using the `EntityFilterType`.
* Simplify random logic. Use filtered hate list.
* D
* D
This error is not necessary as it can be triggered when clicked spells have secondary effects that run through the same spell checks for clicked items but aren't actually clicked by the item. Spells that trigger other spell effects and some Bard scaling songs could trigger this after the initial click.
# Note
- `can_riposte` logic was reverse, setting to `true` caused the attack to not be able to be riposted, the opposite of the intended functionality.
Previously bots were only scanning for nearby clients so any AE spells or procs didn't have mobs to hit.
This changes that to scan for mobs instead of clients so their close entity list supports AEs with mobs to hit.
* [Bug Fix] Send Entity ID in Death Events to resolve#3721
# Notes
- Due to some pointers becoming invalid you may get an invalid entity ID on the killed mob if we don't just directly send the entity ID in the export string.
* Update attack.cpp
* Remove GetID() export.
* Experiment with PCH
* Another run
* GCC test
* Different test
* Another one
* Another one
* Lua headers
* PCH main zone primitives
* Tweaks
* Tweaks
* Tweaks
* Add EQEMU_BUILD_PCH option default to ON
* [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>
* [BUG] Fixed the discrepacy with time using command #time and in quests. https://github.com/EQEmu/Server/issues/3700
* removed comments and paratheses from previous commit.
* fixed typos.
* made some adjustment so #time, /time, scripting, and log all match.
* Update lua_general.cpp
* [Quest API] Add EVENT_LEVEL_UP and EVENT_LEVEL_DOWN to bots
# Notes
- Bots did not have these events, this will allow operators to perform events on bot level up/down.
* Update bot.cpp