* [Bots] Cleanup and remove preprocessors.
- Removes every `#ifdef BOTS` we have and locks bots behind `Bots:AllowBots` rule.
- Bot updates are now done by default similar to regular database updates.
- Modify `CMakeLists.txt`, `.drone.yml`, and `BUILD.md` to match the removal of `EQEMU_ENABLE_BOTS`.
* Cleanup
- Add SQL for enabling bots for servers with bots.
- Add message that tells players/operators bots are disabled.
* Suggested changes.
* Bot injection stuff
* Change SQL to bot SQL.
* Tweaks
* Remove `is_bot`
* Update version.h
* Update main.cpp
* Update database.cpp
* Fix name availability crash
* Remove bots from update script
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Initial code
* Tweak
* Rule description tweak
* More channel work
* More adjustments
* Auto-join saved permanent player channels
* Fix UCS crash if player has no channels to load from table.
* Implemented channel blocking feature
* Update database when player channel's owner or password change
* First round of requested changes.
* Logic tweak to ensure player channels are sets to permanent when appropraite
* name_filter table integration and some refactoring
* Use new `reserved_channel_names` table to block specific channel names.
* Remove some legacy channel block code
* Setup required SQL update to create `reserved_channel_names` table.
* Update db_update_manifest.txt
* Update db_update_manifest.txt
* Update chatchannel.cpp
* Code review
* Database to UCSDatabase
* Repository SaveChatChannel
* CurrentPlayerChannelCount repository
* Cleanup name filter
* CreateChannel
* Update websocketpp
* Increment CURRENT_BINARY_DATABASE_VERSION
Set to 9216
* Minor tweaks to blocked channel name checks & other related areas.
- Enforce blocked channel names on channel creation.
- Also enforce blocked channel names on channel join.
- Add channel status check to Debug logging.
- Minor formatting adjustments.
- Add single quotes to column name value in query.
* Minor log change
* Increment DB Version
* Formatting Tweaks
- Made formatting adjustments consistent with KinglyKrab's recommended changes.
- This compiles successfully with these changes, but unable to test the changes until this weekend.
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Mercs] Add Mercenary Support
# Notes
- Adds `--merc-tables` support to database dumper.
- Adds Mercenary-based repositories.
- Adds required SQL `2023_01_15_merc_data.sql` to insert the tables for those who don't already have them.
- Adds optional SQL `2023_01_15_merc_liaisons.sql` to change NPCs to the Mercenary Liaison class optionally.
* Inline.
* Trim tables_to_dump output
Co-authored-by: Akkadius <akkadius1@gmail.com>
# Notes
- Adds `Character:EnableGroupEXPModifier`, defaults to `true`.
- Adds `Character:GroupMemberEXPModifier`, defaults to `0.2`.
- Adds `Character:FullGroupEXPModifier`, defaults to `2.16`.
- Allows operators to enable or disable the group experience modifier based on number of members.
- Allows operators to change the modifier per member in the group between `2` and `5`.
- Allows operators to change the full group experience modifier.
# Perl
- Minor cleanup of variable types.
# Lua
- Add `bot:GetAugmentAt(slot_id, augment_index)`.
- Add `bot:GetItemAt(slot_id)`.
- Add `bot:SendSpellAnim(target_id, spell_id)`.
- Properly implemented `bot:GetItemIDAt(slot_id)`.
# Notes
- `bot:GetItemIDAt` existed in Lua, but didn't have a bind definition, so was non-functional.
- This makes Perl/Lua bot methods 1:1 as Perl had 75 and Lua had 72, they now both have 75.
# Perl
- Add `$client->CampAllBots()`.
- Add `$client->CampAllBots(class_id)`.
# Lua
- Add `client:CampAllBots()`.
- Add `client:CampAllBots(class_id)`.
# Notes
- Adds constants for `NO_CLASS` which is class `0` and uses `RACE_DOUG_0` for any spots that use race ID `0`.
- Cleans up magic number usage of race/class of `0`.
* [Luamod] Add CalcSpellEffectValue_formula to luamods with example code in utils/mods/spell_formula.lua
* Fix typo
* Change formula down to uint32, fix format issues and remove debug on lua file
* [Zones] Add Max Level Check to Zones.
# Perl
- Add `$client->CanEnterZone(zone_short_name)`.
- Add `$client->CanEnterZone(zone_short_name, instance_version)`.
# Lua
- Add `client:CanEnterZone(zone_short_name)`.
- Add `client:CanEnterZone(zone_short_name, instance_version)`.
# Notes
- Allows operators to limit zones to a maximum level.
- Allows operators to see if a player can enter a zone before sending them.
- Keeps players from entering via `#peqzone` and `#zone` as well if they do not meet the requirements or are not high enough status to bypass the requirements.
* Cleanup.
* [Commands] Add #setanon Command.
# Commands
- Adds `#setanon [Anonymous Flag]`.
# Notes
- Allows operators to turn on/off a player's anonymous flag so they can view their Magelo.
* Update eq_constants.h
* Add character ID support.
* Update setanon.cpp
# Perl
- Add `quest::does_augment_fit(item, augment_id)`.
# Lua
- Add `eq.does_augment_fit(item, augment_id)`.
# Notes
- Returns the augment slot index where the augment fits within the item instance provided, returns `-1` if it doesn't fit or has no open slot to fit in.
* [Quest API] Add Augment Slot Type/Visible to GetItemStat
# Notes
- Adds the ability to get an item's augment slot types and augment slot visibility information.
* const
* [Feature] Add Experience Gain Toggle.
# Perl
- Add `$client->IsEXPEnabled()`.
- Add `$client->SetEXPEnabled(is_exp_enabled)`.
# Lua
- Add `client:IsEXPEnabled()`.
- Add `client:SetEXPEnabled(is_exp_enabled)`.
# Commands
- Add `#exptoggle [Toggle] - Toggle your or your target's experience gain.`.
# Notes
- Allows operators to turn on/off a player's experience gain individually without changing their rule values.
- The command allows operators to give players access to the command to disable their own experience gain.
# Perl
- Add `$npc->GetKeepsSoldItems()`.
- Add `$npc->SetKeepsSoldItems(keeps_sold_items)`.
# Lua
- Add `npc:GetKeepsSoldItems()`.
- Add `npc:SetKeepsSoldItems(keeps_sold_items)`.
# Notes
- Allows operators to keep specific NPCs from keeping items sold to them.
- Keeps NPCs from being cluttered with stuff like Cloth Caps, Bone Chips, etc.
* [Rules] Add rule to limit single kill xp gain
Adds a rule to allow server operators to restrict XP gain/kill to a specified % of their current level.
* Logic correction
* Commenting
* Logic tweaks
* Rule description update
* Logic adjustment
Changed to allow xp cap > 100% and -1 = disabled
* Formatting
* Removed extra space
* Formatting
Renamed rule to be more clear.
Updated rule description.
Minor formatting tweaks.
Implemented use of descriptive bools.
* Data type adjustment
* Removed Bools
* Update exp.cpp
* Update exp.cpp
* Update exp.cpp
* Update exp.cpp
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
* [Quest API] Add GetAugmentIDsBySlotID() to Perl/Lua.
# Perl
- Add `$client->GetAugmentIDsBySlotID(slot_id)`.
- Add `$inventory->GetAugmentIDsBySlotID(slot_id)`.
# Lua
- Add `client:GetAugmentIDsBySlotID(slot_id)`.
- Add `inventory:GetAugmentIDsBySlotID(slot_id)`.
# Notes
- Allows operators to get a list of augments from a specific slot instead of having to build a plugin or something to do it.
- Fix issue with Lua tables starting at index `1` versus index `0`, so you lost the first value of the table due to this.
* Update inventory_profile.cpp
* [Rules] Add backstab rules
Add rules to disable elemental and bane damage on backstab.
* Update special_attacks.cpp
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
* [Rule] Add ManaOnDeath and EndurOnDeath
This rule allows death to fully fill Mana or Endurance.
* Updates rules to live-like
* Adjust rule names to be more descriptive of their intent, remove else cases
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Commands] Add #suspendmulti Command.
# Notes
- Allows operators to suspend multiple people at once in case they have a player who is boxing and want to suspend them all at once.
* To lower.
* Update command.cpp
* Update suspendmulti.cpp
* Create suspendmulti.cpp
# Notes
- "F" or "f" weren't handled in this method, so they weren't working properly.
- Most people don't provide this parameter when setting a permanent data bucket, so wasn't noticed in testing.
* [Bots] Convert Load, Save, SaveNew, and Delete to Repositories.
# Notes
- General code cleanup, as manually adding to these queries doesn't scale very well.
* FindOne.
* Update base_bot_data_repository.h
* Update template.