* [Feature] Add Water Line of Sight Checks
This adds rules to enable or disable checks for spells and autofire to prevent casting or autofire from landing if the player or bot do not match their targets plane in regards to water.
Currently players and bots can cast or autofire if they are not in the water but their target is and vice versa, this should not be possible.
RuleB(Combat, WaterMatchRequiredForAutoFireLoS) set to True (default) checks that both parties are in or out of the water for AutoFire to work.
RuleB(Spells, WaterMatchRequiredForLoS) set to True (default) checks that both parties are in or out of the water for spells to land.
* Cleanup.
* Cleanup.
* Cleanup.
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
# Perl
- Add `$client->GetEXPForLevel(check_level)`.
# Lua
- Add `client:GetEXPForLevel(check_level)`.
# Notes
- This allows operators to see the required experience for a level based on the client provided, this takes race/class modifiers into account as well if enabled.
* [Cleanup] Add GMFind_Struct to packet structures
# Notes
- X and Y were swapped in GMSummon_Struct so it displayed XYZ incorrectly in /find, adding its own struct fixes this.
* Update eq_packet_structs.h
* Update eq_packet_structs.h
* [Commands] Add entity variable commands
# Commands
- Add `#clearentityvariables` to clear all entity variables from yourself or your target.
- Add `#deleteentityvariable [Variable Name]` to delete an entity variable from yourself or your target.
- Add `#setentityvariable [Variable Name] [Variable Value]` to set an entity variable for yourself or your target.
- Add `#viewentityvariables [Search Criteria]` to view your or your target's entity variables.
# Notes
- `#setentityvariable` can use multi-word names/values by using double quotes like `#setentityvariable "Test Variable" "Test Value"`.
- `#viewentityvariable` does not require a search criteria, not using one shows all entity variables on yourself or your target.
* Update viewentityvariables.cpp
* Unnecessary parameter.
* Consolidate commands.
* Update entityvariable.cpp
* Update command.cpp
* Proper arguments.
* [Performance] Character tribute is now bulk saved
This pull request combines individual `character_tribute` queries during `Save()` into one.
This pull request also adds a primary key of `id` to `character_tribute` and renames the pre-existing `id` column to `character_id`, this allows us to use repositories for this table.
* Update zonedb.cpp
* Update zonedb.cpp
* [Commands] Add #findcurrency Command
# Notes
- Allows you to find alternate currencies by item ID or name.
- Has a saylink for summoning a stack of the currency if the GM can use the `#summonitem` command.
* Update findcurrency.cpp
* Update findcurrency.cpp
# Notes
- `#npcedit special_attacks` and `#npcedit special_abilities` send duplicate messages since the `d` variable wasn't being set and a message was being sent instead, meaning a message was sent inside the condition as well as a blank message at the bottom of the command.
* [Rules] Add World:MaximumQuestErrors Rule
# Notes
- Allows operators to display more than 30 errors with #questerrors if they want.
* Update quest_interface.h
# Notes
- NPCs when spawned with this command have 0 health by default, requiring operators to manually edit their health if they're using this NPC as an NPC in their hub.