# Perl
- Add `$entity_list->SignalAllBotsByOwnerName(owner_name)`.
# Lua
- Add `eq.get_entity_list():SignalAllBotsByOwnerName(owner_name)`.
# Notes
- Adds a way to signal all bots by owner name instead of only character ID.
* [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
* [Bug Fix] Fix Bot "Failed to Load" Messages.
# Notes
- Bots were producing error messages for "failing to load" spells and inventory when the bot had no spells, like a Warrior, or when the bot was naked, like a newly created bot.
* Update botspellsai.cpp
# Perl
- Add `$bot->Camp()`.
- Add `$bot->Camp(save_to_database)`.
# Lua
- Add `bot:Camp()`.
- Add `bot:Camp(save_to_database)`.
# Notes
- Saves to database by default, overload is for edge case where a user may not want bot to save to database.
* [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.
* [Bug Fix] Fix NPC Reference in EVENT_SPAWN
# Notes
- Event parsing was too early and memory wasn't fully allocated, meaning that sometimes you could use the NPC reference and other times you couldn't.
- Most people worked around this by setting timers in `EVENT_SPAWN` then using `EVENT_TIMER` to handle the stuff they wanted to do on spawn.
# Example Code in Perl
```pl
sub EVENT_SPAWN {
quest::shout($npc->GetCleanName() . " just spawned with an ID of " . $npc->GetID() . " and an NPC Type ID of " . $npc->GetNPCTypeID() . ".");
}```
* Update bot.cpp
# Perl
- Add `$bot->GetBotID()`.
- Add `EVENT_DESPAWN`.
- Add `EVENT_DESPAWN_ZONE`.
# Lua
- Add `bot:GetBotID()`.
- Add `event_despawn`.
- Add `event_despawn_zone`.
# Notes
- Allows operators to determine when a Bot or an NPC has been despawned via Depop.
- Bots call NPC::Depop on ^camp so we just put the code there.
- Adds the ability to get a bot's ID using their reference in case you're looping a list and need that value.
- Moves `DispatchZoneControllerEvent` from NPC to Mob so it can be used by any type.
# Perl
- Add `$client->CalcEXP(consider_level, ignore_modifiers)`.
# Lua
- Add `client:CalcEXP(consider_level)`.
- Add `client:CalcEXP(consider_level, ignore_modifiers)`.
# Notes
- Allows operators to calculate experience based on consider level as well as ignore modifiers to get a baseline of experience that should be expected when killing a mob.
# Commands
- Adds `#guild search [Search Criteria]` sub command.
# Notes
- Allows operators to search for a guild instead of listing all guilds at once.
- Adds a method for sending guild sub commands to make code drier.
# Commands
- Add `#findcharacter [Search Criteria]`.
# Notes
- Allows operators to search for characters by ID or a portion of their name to easily get ID/Name.
* [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
* [Bug Fix] Fixed message on demote permissions check.
* Included promote fix
* Formatting consistency, grammar, use constants
* Further use of constants/consistency of error/failure message colors
# 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
# Perl
- Add `quest::do_augment_slots_match(item_one, item_two)`.
# Lua
- Add `eq.do_augment_slots_match(item_one, item_two)`.
# Notes
- Allows operators to see if augments slots across two items match for something like moving augments from one item to another.
* [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.
# Perl
- Add `$mob->IsAttackAllowed(target)`.
- Add `$mob->IsAttackAllowed(target, is_spell_attack)`.
# Lua
- Add `mob:IsAttackAllowed(target)`.
# Notes
- Lua had `mob:IsAttackAllowed(target, is_spell_attack)` but not the other overload.
- Perl had neither.