* First pass of player_event_loot_items
* Second pass of player_event_loot_items
* Third pass of player_event_loot_items
* Example without RecordDetailEvent template
* Cleanup the removal of the template
* Fourth Pass
Add retention for etl tables
Rename tables/fields to etl nomenclature
Combine database work to one atomic load
* Reposition to reduce db tasks
* Refactor etl processing for easier additions
* Add merchant purchase event
testing passed though appears that the event itself has a few bugs. Will fix them in another commit
* Fix PlayerEventMerchantPurchase in client_packet.cpp
* WIP - Handin
* Handin Event added
* Cleanup
* All a rentention period of 0 days which deletes all current records.
* Updates
Cleanup and refactor a few items.
* Cleanup and Formatting
Cleanup and Formatting
* Add etl for
Playerevent::Trade
PlayerEvent::Speech (new event to mirror functionality of qs_speech
* Add etl for
Playerevent::KilledNPC, KilledNamedNPC and KilledRaidNPC
* Add etl for Playerevent::AA_purchase
Add etl for Playerevent::AA_purchase
* Cleanup before PR
* Review comment updates.
* Add world cli etl:settings to output a json on all player event details.
* Add reserve for all etl_queues
Correct a failed test case for improper next id for etl tables when table is first created.
* Potential solution for a dedicated database connection for player events.
* Simple thread for player_events. Likely there is a better way to do this.
* Add zone to qs communications for recordplayerevents
First pass of enabling zone to qs direct transport to allow for PlayerEvents to bypass world.
* Cleanup a linux compile issue
* Add augments to LOOT ITEM and DESTROY ITEM
* Add augments to ITEMCREATION, FORAGESUCCESS, FISHSUCCESS, DESTROYITEM, LOOTITEM, DROPPEDITEM, TRADERPURCHASE, TRADERSELL, GUILDTRIBUTEDONATE and cleaned up the naming convention of augments
* Formatting fixes
* Swap out GetNextTableId
* Statically load counter
* Add counter.clear() since the counter is static
* Upload optional QS conversion scripts
* Remove all qs_tables and code referencing them
* Update database.cpp
* Simplify ProcessBatchQueue
* Simplify PorcessBatchQueue
* Simplify event truncation
* Build event truncation to bulk query by retention groups
* Post rebase
* Update player_events.h
* Fix build
* Update npc.cpp
* First pass of direct zone to qs sending for player events
* Remove keepalive logic
* Fix event ordering
* Cleanup
* Update player_event_logs.cpp
* Wipe event data after ETL processed
* Split up database connections, hot reload logs for QS
* Load rules from database vs qs_database
* Update player_event_logs.cpp
* Hot toggle queryserv connect
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Implement spell AI pulling, fix throw stone
* more pull tweaks
* holding check at start of ai process
* fully implement ^pull logic to always return, can still be overidden by ^attack
* Rewrite ^pull logic and handling. **MORE**
Add ^setassistee command to set who your bots will assist. Bots will always assist you first before anyone else.
If the rule Bots, AllowCrossGroupRaidAssist is enabled bots will assist the group or raid main assists.
Rewrites logic in handling of pull and returning to ensure bots make it back to their location.
* Move HateLine to a better ID
* cleanup ST_Self logic in CastChecks
* Removed unused BotSpellTypeRequiresLoS
* Move fizzle message to define
* add timer checks to Idle/Engaged/Pursue CastCheck to early terminate
* Add back !IsBotNonSpellFighter() check to the different CastCheck
* Correct IsValidSpellRange
* Implement AAs and harmtouch/layonhands to ^cast --- fix IsValidSpellRange
* Add PetDamageShields and PetResistBuffs to IsPetBotSpellType()
* Add priorities to HateLine inserts for db update
* Remove SpellTypeRequiresCastChecks
* Add bot check to DetermineSpellTargets for IsIllusionSpell
* merge with previous
* Correct bot checks for ST_GroupClientAndPet
* Remove misc target_type checks
* Add lull/aelull to ^cast
* Add more checks for CommandedSubTypes::AETarget
* remove unneeded checks on IsValidSpellTypeBySpellID
* add to aelull
* rewrite GetCorrectSpellType
* Add IsBlockedBuff to CastChecks
* Add spellid option to ^cast to allow casting of a specific spell by ID
* ^cast adjustments for spellid casts
* Add missing alert round for ranged attacks
* More castcheck improvements
* CanUseBotSpell for ^cast
* remove ht/loh from attack ai
* remove SetCombatRoundForAlerts that triggered every engagement
* Add RangedAttackImmunity checks before trying to ranged attack
* move bot backstab to mob
* fix MinStatusToBypassCreateLimit
* more backstab to mob cleanup
* add bot checks to tryheadshot / tryassassinate
* adjust version number for bots
* add back m_mob_check_moving_timer, necessary?
* add sanity checks for classattacks
* Get rid of Bots:BotGroupXP and change logic to support Bots:SameRaidGroupForXP
Bots won't do anything if not in the same group so this should more accurately control only when in the same raid group.
* add "confirm" check to ^delete
* Update bot.cpp
* Remove `id` from bot_settings, correct types
* Implement blocked_buffs and blocked_pet_buffs
* more blocked buff tweaks
* add beneficial check to ^blockedbuffs
* command grammar
* missing )
* Move getnames for categories and settings to mob, rename hptomed/manatomed
* add GetBotSpellCategoryIDByShortName and CopyBotBlockedPetBuffs, update ^defaultsettings command
* cls cleanup
* Allow bots to clear HasProjectIllusion flag
* Add PercentChanceToCastGroupCure
* Implmenet PetCures, add some missing types for defaults/chance to cast
* Change GetRaidByBotName to GetRaidByBot
* Typo on PetBuffs implement
* Change GetSpellListSpellType to GetParentSpellType
* missing from GetChanceToCastBySpellType
* Fix performance in IsValidSpellRange by flipping HasProjectIllusion
* merge with prev
* merge with cls cleanup
* Reorder IsTargetAlreadyReceivingSpell/CheckSpellLevelRestriction/IsBlockedBuff
* Combine GatherGroupSpellTargets and GatherSpellTargets
* Cleanup IsTargetAlreadyReceivingSpell
* Fix ^petsettype to account for usable levels of spells and remove hardcoded level limits.
* Remove Bot_AICheckCloseBeneficialSpells and use AttemptCloseBeneficialSpells for better performance
* remove default hold for resist buffa
* move IsValidSpellRange further down castchecks
* raid optimizations
* correct name checking to match players
* more name checks and add proper soft deletes to bots
* organize some checks in IsImmuneToBotSpell
* Fix GetRaidByBotName and GetRaidByBot checks to not loop unnecessarily
* Move GatherSpellTargets to mob
* Change GetPrioritizedBotSpellsBySpellType to vector
Some slipped through in "organize some checks in IsImmuneToBotSpell"
* Move GatherSpellTargets and Raid to stored variables.
Missing some in "organize some checks in IsImmuneToBotSpell"
* comment out precheck, delays, thresholds, etc logging
missed some in "organize some checks in IsImmuneToBotSpell"
* Missing IsInGroupOrRaid cleanup
* Implement AIBot_spells_by_type to reduce looping when searching for spells
* Add _tempSpellType as placeholder for any future passthru
* todo
* Move bot_list from std::list to std::unordered_map like other entities
* Fix missing raid assignment for GetStoredRaid in IsInGroupOrRaid
* TempPet owned by bots that get the kill will now give exp like a client would
* Remove unnecessary checks in bot process (closescanmoving timer, verify raid, send hp/mana/end packet
* Fix client spell commands from saving the wrong setting
* Cleanup ^copysettings command and add new commands
* Add pet option to ^taunt
No longer has toggle, required on/off option and an optional "pet" option to control pets' taunting state
* Allow pet types to ^cast, prevent failure spam, add cure check
* more raid optimizations, should be final.
10 clients, 710 bots, 10 raids, ~250 pets sits around 3.5% CPU idle
* Move spell range check to proper location
* Implement ^discipline
* remove ^aggressive/^defensive
* remove this for a separate PR
* cleanup
* Add BotGroupSay method
* todo list
* Add missing bot_blocked_buffs to schema
* Remove plural on ^spelltypeidsand ^spelltypenames
* Move spelltype names, spell subtypes, category names and setting names to maps.
* move los checks to mob.cpp
* Bot CampAll fix
* Bots special_attacks.cpp fix
* Add zero check for bot spawn limits
If the spawn limit rule is set to 0 and spawn limit is set by bucket, if no class buckets are set, it defaults to the rule of 0 and renders the player unable to spawn bots.
This adds a check where if the rule and class bucket are 0, it will check for the spawn limit bucket
* Add HasSkill checks to bot special abilities (kick/bash/etc)
* code cleanup 1
* code cleanup 2
* code cleanup 3
* code cleanup 4
* fix ^cast wirh commanded types
* Remove bcspells, fix helper_send_usage_required_bots
* linux build fix
* remove completed todo
* Allow inventory give to specific ID slots
* Update TODO
* Correct slot ranges for inventorygive
* Add zone specific spawn limits and zone specific forced spawn limits
* remove bd. from update queries where it doesn't exist
* Rename _spellSettings to m_bot_spell_settings
* Add IsPetOwnerOfClientBot(), add Lua and Perl methods
* Make botOwnerCharacterID snakecase
* Throw bot_camp_timer behind Bots:Enabled rule
* Move various Bot<>Checks logging to BotSpellChecks
* Remove from LogCategoryName
* Consolidate IsInGroupOrRaid
* Consolidate GatherSpellTargets
* Add missing Bot Spell Type Checks to log
* Add GetParentSpellType when checking spelltypes for idle, engaged, pursue CastChecks.
* Consolidate AttemptForcedCastSpell
* Consolidate SetBotBlockedBuff/SetBotBlockedPetBuff
* Add list option to ^spellpriority commands.
* Move client functions to client_bot
* Move mob functions to mob_bot
* Move bot spdat functions to spdat_bot
* Move SendCommandHelpWindow to SendBotCommandHelpWindow and simplify
* Change char_id to character_id for bot_settings
* update todo
* Fix typo on merge conflict
* Cleanup command format changes, remove hardcoded class IDs in examples.
* Set #illusionblock for players to guide access
* Move client commands for bot spells from gm commands to existing bot commands
* Fix alignment issues
* More alignment fixes
* More cleanup 1
* More cleanup 2
* Fix BotMeditate to med at proper percentages
* Correct GetStopMeleeLevel checks for some buff checks
* Add back hpmanaend update to bot raid, force timer update to prevent spamming
* Remove log
* Cleanup ranged and ammo calculations - Adds throwing check for match
* Add check in distance calculations to stay at range if set even if no ammo or ranged
* Move melee distance calculations to better function
* Add GetBuffTargets helper
* Missing p_item, s_item in CombatRangeInput
* Linux test?
* Reduce GetCorrectBotSpellType branching slightly
This is still an ugly ass function but my brain is melted
* Line fixes
* Make bot pets only do half damage in pvp
* Add bot pet pvp damage to tune
* Add bot pet check for AIYellForHelp
* Add bots to UseSpellImpliedTargeting
* Move toggleranged, togglehelm and illusionblock to new help window. Add actionable support
* Add bot and bot pet checks to various spells, auras and targeting checks that were missing.
* update todo
* New lines
* Correct DoLosChecks
* Remove Log TestDebug
* Remove _Struct from struct declarations
* Add bot check to IsAttackAllowed for GetUltimateOwner to skip entity list where possible
* Wrap SaveBotSettings in Bots Enabled check
* Remove comment
* Wrap bot setting loading for clients in bots enabled rule
* Cleanup BlockedBuffs logic in SpellOnTarget
* Rename BotSpells_Struct/BotSpells_Struct_wIndex
* Rename spawn/create status bypass rules, fix return for spawn limit
* Remove unnecessary return in CanBuffStack, cleanup
* Enable recastdelay support for clients
* Remove unused variables
* Rename _assistee to bot_assistee
* hardcode BotCommandHelpWindow colors
* todo
* Fix ^cast summoncorpse
* todo
* Reimplement secondary colors to BotSendCommandHelpWindow
* Give ^copysettings/^defaultsettings more options, cleanup.
* Cleanup some commands
* Add comment to CheckLosCheat/CheckLosCheatExempt
* Make struct BotSpellSettings snake case
* Allow duplicate casts of same spell on target for heals and cures
* Add default delay to cures
* Remove unused methods
* Implement missing ^spellresistlimits/^resistlimits command
* Move functions out of mob.h and cleanup
* Return for GetRawBotList
This checks offline bots too
* Rename BotGroupSay to RaidGroupSay
* Prevent bots from forming their own group if a bot that is a group leader is removed from the raid
* Linux fix?
* IsPetOwner fixes
* Add remove option to list for ^blockedbuffs / ^blockedpetbuffs
* Implement ^spellannouncecasts to toggle announcing casts of spell types
* Remove rule Bots:BardsAnnounceCasts
* Update bot.h
* Remove unused no_pets option from GatherSpellTargets
* Move ^attack response back to normal chat window (other)
* Set lower limit of spell delays to 100 rather than 1
* Correct pet checks on GetUltimateSpell functions
* Add rules (Bots, AICastSpellTypeDelay, Bots, AICastSpellTypeHeldDelay) to prevent spamming of failed spell type AI casts
* Correct pet buff type logic to catch DS/Resists with other spell effects in them
* Fix defaults for clients
* Add more logic for necros/shaman for default heal thresholds due to lich and canni
* Rename SpellHold, SpellDelay, SpellMinThreshold, SpellMaxThreshold, SpellRecastDelay to fit SpellType style naming
* Use GetTempSpellType() for announce check in RaidGroupSay
* Make all spell shortnames plural where applicable
* Update bot.cpp
* Bots:BotsUseLiveBlockedMessage filter to spell failure
* Move GetSpellTargetList to only get called when necessary to reduce overhead
* formatting
* Formatting
* Simplify case SE_Illusion and SE_IllusionCopy for GetIllusionBlock
* Clean up InterruptSpell
* Cleanup IsBot() checks for DetermineSpellTargets->ST_GroupClientAndPet
* Cleanup range/aoe_range check in SpellFinished
* Cleanup DetermineSpellTargets->ST_GroupNoPets
* Cleanup DetermineSpellTargets->ST_Self for bot summon corpse
* Cleanup DetermineSpellTargets->ST_Pet
* Cleanup bot logic in TryBackstab
* Cleanup IsAttackAllowed checks for bots and their pets
* Cleanup StopMoving for bots
* Cleanup CanThisClassTripleAttack
* Fix casting for GetIllusionBlock checks
* Formatting
* Fix DetermineSpellTargets for group spells (this also wasn't properly checking the rule Character:EnableTGB in master)
* Cleanup spelltarget grabbing logic, consolidate group heals in to GetNumberNeedingHealedInGroup
* Throw added client los pet checks behind LoS cheat rule for bots
* CLeanup give_exp on npc death logic and ensure client pets always pass.
* Undo unintended rename from previous refactor
* Remove pointless Bots, SameRaidGroupForXP rule
* Revision to 0690783a9d1e99005d6bee0824597ea920e26df9
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [CRASH] Fix crash on CentOS
Update raid crash in CentOS. raid constructors and learnmembers used a memset that was overwriting std::string structure.
Added default initializers to RaidMember struct
* Update based on feedback
* Update Raid Functions
Updated various raid features for:
Titanium
- Raid window now functional, including with BOTS
- Raid delegate assist/mark work
- Raid notes work
- Raid /rmark, /clearmarks work
Underfoot
- Raid window was already functional
- Raid delegate assist/mark work
- Raid notes work
- Raid /rmark, /clearmarks work
* Updates to resolve feedback
* Slight update for overlooked case in encode for RaidUpdate for clients above Ti.
* Updates to further address feedback. Only updated translators for Ti/RoF2. Once ok, I will update the others.
* Update linux-build.sh
* Final updates for other translators and the strncpy_s issue.
* Fix for strn0cpy in raids.cpp, translators, and defines. Updated all in raids.cpp as well.
* Reveted defines change.
* Reverted accidental change
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Fix for GENERIC_9_STRINGS
* Add Bot Heal Message Display
Creates a new rule to display Bot heal messages to the Bot Owner
* 2021-03-25 11L04pm
Spell and Heal Rule added to allow for Bot spell and heal damage to be sent to the Bot Owner's Group. Also added a check to remove duplicate message for #damage on self.
* Update .gitignore
* BOT work
Added BOT logging damage/heals to owner
Added BOT message to owner for harmony fails
Made var Critical global to remove duplicate crit messages
Added a NULL check to Mob:GetCleanname()
* Bot Group Work
Fixed botid=charid spawn on zone issue
Added a group_list update on zone to refresh from database to fix a dangling pointer to a Bot object that was camped but was previously in a group within the zone being entered.
Modified Bot::ProcessBotGroupInvite to use the client of the bot when doing the Bot initialization so that a leader can invite another owner's Bot
* Jan 4
Basic structure in place for Raid::AddBot though not working
* Basement Jan 5
* End of day Jan 5
Working Raid Invite to a Bot.
* Update to Client::QueuePacket to not attempt to send a packet to a BoT. Not clean, but a broad solution.
* Updated Raid::VerifyRaid
* Some Bot Raid working
* Before VS Crash
* Use Case 1, 2, 3,4,7 working.
Need to fix 5, 6, 8
* Work on usecase 5
* A few more use cases working
* New work on Raid invite with a invitor having a group
* Bot Raid inviting working for all use cases
* A few changes
* end of day jan 10
* Jan 11
* end of day Jan 11
* Bot Invite/Accept cleanup
* Start of moving raid bot functions to their own methods
* More bot raid changes
* More raid spell work
* end of day Jan 16
* spawn work
* Spawn on login working
* End of Day Jan 18
* Raid leader and mana/hp updates fixed
* Spell Tracking
* Issue with Bot Death in raid when casted upon. 1741 raid.cpp
* Bot Death fixed and few other crashes
* Working on botgroup removal
* Bot Disbanding Work 90%
* Looks like BOTs are working
* Fixed a bot crash
* bug tracing on entity list mismatch
* safe_delete resoves problem. No to track down leak
* seems to be working
* Memory corruption found - sending packets to BoTs using Client class
* added Raid::IsRaidMemberBot()
* Update p_raid_instance
* g3
* Final - Bot Raid Working
* Fixed IsRaidMemberBot to remove memory leak
Fixed altcombat crash though RaidMainAssist (428) needs fixing
* add RaidMember.IsBot
* Repaired IsBot function to be more preformant. Now works on standard performance machine
* Fixed Bard AE Target Spells
Removed assert for buffs
* updated based on Feb 2022 master updates
* Added bot_db_updates and version increment
* Cleanup of bot raid work and inclusion of bot_raid in cmake
* Fix repop crash
* Bot databse change to not use view
* Revert "Merge branch 'master' of https://github.com/neckkola/Server"
This reverts commit 18268306378a34a6f0a9015cfcb4f48364bef013, reversing
changes made to 7c1a1399918aeee1dc3f6f30e39044d7d1bec4c9.
* Updated syntax for 9230
Updated this syntax as to run on maria 10.1
* Revert "Updated syntax for 9230"
This reverts commit ffdd46c8b26a8607d41b95af3c3ab575c41f4231.
* Fix for cross zone mark npc when entity ids are reused.
* Fixed and tested
added db change
and tested across zones
* Transition to direct attributes instead of encode
Update the pattern to utilize direct raid object attributes for entity id, zone id and instance id instead of an encoded single field.
* [RAID] Add Raid Features
[RAID] Add Raid Features
- Add delegate main assist
- Add delegate main marker
- Add target ring for main assisters. Uses MA1, then MA2, then MA3
- Add /assist raid respecting /assist on and /assist off
- Add Raid Notes. Functions across zones
- Add Raid XTarget functional
- Raid Leader can mark without being delegated Main Marker. Must have the appropriate AA
* Update to new db routines
* Updated several formatting issues based on review
* Update to pp->tribute_time_remaining to avoid edge case. Unrelated to raid updates.
* Updates to resolve comments/review.
Added a few edge case updates as well.
* Refactored to use database repositories for raid_details and raid_members. Other updates as noted in review.
* Updated database manifest and fixed potential leak within Client::Handle_OP_AssistGroup
* Update for remaining review items
* Refactor SendAssistTarget to use struct/vector loop
* Have IsAssister use range based for loop and return bool
* General cleanup
* Simplify SendRaidAssistTarget to use struct / vector
* Formatting in Handle_OP_RaidDelegateAbility
* Format SendRemoveRaidXTargets and clean up error statements
* Format SendRemoveAllRaidXTargets
* Formatting
* Default return FindNextRaidDelegateSlot to -1
* Change fields to marked_npc_1/2/3 (missing last underscore)
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* [Crash] Fix for crash in Raid::QueuePacket
* bots can't be a part of BalanceMana
* corrected additions
* adding additional is_bot gates
* updating raid for loops to be range based.
* typo
* formatting
* formatting
* Fix for GENERIC_9_STRINGS
* Add Bot Heal Message Display
Creates a new rule to display Bot heal messages to the Bot Owner
* 2021-03-25 11L04pm
Spell and Heal Rule added to allow for Bot spell and heal damage to be sent to the Bot Owner's Group. Also added a check to remove duplicate message for #damage on self.
* Update .gitignore
* BOT work
Added BOT logging damage/heals to owner
Added BOT message to owner for harmony fails
Made var Critical global to remove duplicate crit messages
Added a NULL check to Mob:GetCleanname()
* Bot Group Work
Fixed botid=charid spawn on zone issue
Added a group_list update on zone to refresh from database to fix a dangling pointer to a Bot object that was camped but was previously in a group within the zone being entered.
Modified Bot::ProcessBotGroupInvite to use the client of the bot when doing the Bot initialization so that a leader can invite another owner's Bot
* Jan 4
Basic structure in place for Raid::AddBot though not working
* Basement Jan 5
* End of day Jan 5
Working Raid Invite to a Bot.
* Update to Client::QueuePacket to not attempt to send a packet to a BoT. Not clean, but a broad solution.
* Updated Raid::VerifyRaid
* Some Bot Raid working
* Before VS Crash
* Use Case 1, 2, 3,4,7 working.
Need to fix 5, 6, 8
* Work on usecase 5
* A few more use cases working
* New work on Raid invite with a invitor having a group
* Bot Raid inviting working for all use cases
* A few changes
* end of day jan 10
* Jan 11
* end of day Jan 11
* Bot Invite/Accept cleanup
* Start of moving raid bot functions to their own methods
* More bot raid changes
* More raid spell work
* end of day Jan 16
* spawn work
* Spawn on login working
* End of Day Jan 18
* Raid leader and mana/hp updates fixed
* Spell Tracking
* Issue with Bot Death in raid when casted upon. 1741 raid.cpp
* Bot Death fixed and few other crashes
* Working on botgroup removal
* Bot Disbanding Work 90%
* Looks like BOTs are working
* Fixed a bot crash
* bug tracing on entity list mismatch
* safe_delete resoves problem. No to track down leak
* seems to be working
* Memory corruption found - sending packets to BoTs using Client class
* added Raid::IsRaidMemberBot()
* Update p_raid_instance
* g3
* Final - Bot Raid Working
* Fixed IsRaidMemberBot to remove memory leak
Fixed altcombat crash though RaidMainAssist (428) needs fixing
* add RaidMember.IsBot
* Repaired IsBot function to be more preformant. Now works on standard performance machine
* Fixed Bard AE Target Spells
Removed assert for buffs
* updated based on Feb 2022 master updates
* Added bot_db_updates and version increment
* Cleanup of bot raid work and inclusion of bot_raid in cmake
* Delete .gitignore
* Revert "Delete .gitignore"
This reverts commit 8523658d3bacdc068bcafaa652d2100afecddfc2.
* Fixed a packet issue
* Merged upstream/master
Merged upstream/master and removed ifdef BOTS as per recent dev approach for BOTS. Functionality is there, compiles and tests ok. A few problems to be resolved though this is a good baseline.
* Added sql update for raid_members to add isbot
* Updated Bot Follow Function
Bot will now follow the Group Leader if IsClient, otherwise follows the Bot Owner
* Updates to Bot Raid System
When camping a client, remove them from the raid. If they are leader, place leadership to the next client.
Update a few crash checks in bot_raid.cpp
* [BOTS] Added RuleB Enabled checks and updated base repo for raid_members
Updated several RuleB(Bots, Enabled) checks
Updated the base repo to be autogenerated.
Raid functionality should work with a non-bots enabled database.
* Few quick updates
* Updates
Corrected a number of comments. Compiled and tested against bot and non-bot database though requires the isbot column in raid_members for both.
Moved the db update out of the bot stream to make bot check code easier.
* Formatting and other small updates
* A few more RuleB(Bots, Enabled) additions
* Fix issue with conflict of bot ID versus character ID.
* Delete CMakeSettings.json
* Comment Updates and other
Several updates including
- fixed comments from PR
- added id to raid_members and unique index on name to avoid botid and charid conflicts
- updated a few raid functions for iterators
- reordered several raid operations to ensure send leader packet to be the last item to ensure proper updating on the client
- update sql to use Replace instead of Insert for botid conflicting with charid
* Exploit fix for Raid Bots
Added item from @Nite to disallow spawning or camping bots if Raid is engaged. Avoids abusive situations.
* Initial Commit
* fix Raid Window after zoning
The raid window was not fully updating for clients not in the zone.
* Cleanup
* Update
Fixed comments
* Resolve crash for MOTD
Fixed a crash situation sending a raid MOTD to BOTS.
* Update ruletypes.h
* Updated to resolve a few recent comments
Fixed some comments within attack.cpp
* fix sql query
* update repository
* prevent duplicate entries in raid after group invite, and cleanup
* fixes for botgroups not following, and add already in raid messages.
* fix messagestring
* fixes
* Cleanup, and resolving issues with disbanding
* refactoring
* more cleanup/fixing.
* fixes for removing from ground in raid
* Refactoring/fixing multiple clients
* fix for compiling
* Bugs from refactoring fixed
* Testing completed, cleaning up unwanted items/duplicate code.
* Cleaned up AICastSpell
* fix typos
* Refactoring
* Adding Raid checks to AI_Process/cleanup
* Fix a typo
Was getting a SQL error on BOT spawn. Fixed typo.
* fix for crash
* Fixed crash when inviting player, more refactoring
* AI_Process Refactoring work
* More Refactoring/fixes for follow
* Finish Refactoring AI_Process
* cleanup
* cleanup
* cleanup
* cleanup
* fix melee attack loop
* fix for leashowner.
* fix for leashowner.
* Bots persist in raid after client death/LD/Camp
* Fix Bot Groups when zoning after death.
* Fix Bots in group following after client death
* remove unnecessary query
* Allow Raid members to invite Bots if owner is in raid. cleanup
* optimization of raid verification
* remove this
* Code Cleanup
* formatting
* formatting
* formatting
* fix for macro
* add return for TryClassAttacks
* fix query
* fix for crash
* restrict camping/spawn in combat.
* Fix other crash issue.
* update learnmembers to use Strings::To, cleanup magic numbers
* fix for merge.
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
Co-authored-by: Aeadoin <109764533+Aeadoin@users.noreply.github.com>
* [Strings] Add more number formatters
# Notes
- Adds `Strings::ToUnsignedInt` for `uint32` support.
- Adds `Strings::ToBigInt` for `int64` support.
- Adds `Strings::ToUnsignedBigInt` for `uint64` support.
- Adds `Strings::ToFloat` for `float` support.
- Replaces all `std::stoi` references with `Strings::ToInt`.
- Replaces all `atoi` references with `Strings::ToInt`.
- Replaces all `std::stoul` references with `Strings::ToUnsignedInt`.
- Replaces all `atoul` references with `Strings::ToUnsignedInt`.
- Replaces all `std::stoll` references with `Strings::ToBigInt`.
- Replaces all `atoll` references with `Strings::ToBigInt`.
- Replaces all `std::stoull` references with `Strings::ToUnsignedBigInt`.
- Replaces all `atoull` references with `Strings::ToUnsignedBigInt`.
- Replaces all `std::stof` references with `Strings::ToFloat`.
* [Strings] Add more number formatters
- Adds `Strings::ToUnsignedInt` for `uint32` support.
- Adds `Strings::ToBigInt` for `int64` support.
- Adds `Strings::ToUnsignedBigInt` for `uint64` support.
- Adds `Strings::ToFloat` for `float` support.
- Replaces all `std::stoi` references with `Strings::ToInt`.
- Replaces all `atoi` references with `Strings::ToInt`.
- Replaces all `std::stoul` references with `Strings::ToUnsignedInt`.
- Replaces all `atoul` references with `Strings::ToUnsignedInt`.
- Replaces all `std::stoll` references with `Strings::ToBigInt`.
- Replaces all `atoll` references with `Strings::ToBigInt`.
- Replaces all `std::stoull` references with `Strings::ToUnsignedBigInt`.
- Replaces all `atoull` references with `Strings::ToUnsignedBigInt`.
- Replaces all `std::stof` references with `Strings::ToFloat`.
* Rebase cleanup
* Changes/benchmarks/tests
---------
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Plumbing
* Batch processing in world
* Cleanup
* Cleanup
* Update player_event_logs.cpp
* Add player zoning event
* Use generics
* Comments
* Add events
* Add more events
* AA_GAIN, AA_PURCHASE, FORAGE_SUCCESS, FORAGE_FAILURE
* FISH_SUCCESS, FISH_FAILURE, ITEM_DESTROY
* Add charges to ITEM_DESTROY
* WENT_ONLINE, WENT_OFFLINE
* LEVEL_GAIN, LEVEL_LOSS
* LOOT_ITEM
* MERCHANT_PURCHASE
* MERCHANT_SELL
* SKILL_UP
* Add events
* Add more events
* TASK_ACCEPT, TASK_COMPLETE, and TASK_UPDATE
* GROUNDSPAWN_PICKUP
* SAY
* REZ_ACCEPTED
* COMBINE_FAILURE and COMBINE_SUCCESS
* DROPPED_ITEM
* DEATH
* SPLIT_MONEY
* TRADER_PURCHASE and TRADER_SELL
* DISCOVER_ITEM
* Convert GM_COMMAND to use new macro
* Convert ZONING event to use macro
* Revert some code changes
* Revert "Revert some code changes"
This reverts commit d53682f997e89a053a660761085913245db91e9d.
* Add cereal generation support to repositories
* TRADE
* Formatting
* Cleanup
* Relocate discord_manager to discord folder
* Discord sending plumbing
* Rename UCS's Database class to UCSDatabase to be more specific and not collide with base Database class for repository usage
* More discord sending plumbing
* More discord message formatting work
* More discord formatting work
* Discord formatting of events
* Format WENT_ONLINE, WENT_OFFLINE
* Add merchant purchase event
* Handle Discord MERCHANT_SELL formatter
* Update player_event_discord_formatter.cpp
* Tweaks
* Implement retention truncation
* Put mutex locking on batch queue, put processor on its own thread
* Process on initial bootup
* Implement optional QS processing, implement keepalive from world to QS
* Reload player event settings when logs are reloaded in game
* Set settings defaults
* Update player_event_logs.cpp
* Update player_event_logs.cpp
* Set retention days on boot
* Update player_event_logs.cpp
* Player Handin Event Testing.
Testing player handin stuff.
* Cleanup.
* Finish NPC Handin.
* set a reference to the client inside of the trade object as well for plugins to process
* Fix for windows _inline
* Bump to cpp20 default, ignore excessive warnings on windows
* Bump FMT to 6.1.2 for cpp20 compat and swap fmt::join for Strings::Join
* Windows compile fixes
* Update CMakeLists.txt
* Update CMakeLists.txt
* Update CMakeLists.txt
* Create 2022_12_19_player_events_tables.sql
* [Formatters] Work on Discord Formatters
* Handin money.
* Format header
* [Formatters] Work on Discord Formatters
* Format
* Format
* [Formatters] More Formatter work, need to test further.
* [Formatters] More Work on Formatters.
* Add missing #endif
* [Formatters] Work on Formatters, fix Bot formatting in ^create help
* NPC Handin Discord Formatter
* Update player_event_logs.cpp
* Discover Item Discord Formatter
* Dropped Item Discord Formatter
* Split Money Discord Formatter
* Trader Discord Formatters
* Cleanup.
* Trade Event Discord Formatter Groundwork
* SAY don't record GM commands
* GM_Command don't record #help
* Update player_event_logs.cpp
* Fill in more event data
* Post rebase fixes
* Post rebase fix
* Discord formatting adjustments
* Add event deprecation or unimplemented tag support
* Trade events
* Add return money and sanity checks.
* Update schema
* Update ucs.cpp
* Update client.cpp
* Update 2022_12_19_player_events_tables.sql
* Implement archive single line
* Replace hackers table and functions with PossibleHack player event
* Replace very old eventlog table since the same events are covered by player event logs
* Update bot_command.cpp
* Record NPC kill events ALL / Named / Raid
* Add BatchEventProcessIntervalSeconds rule
* Naming
* Update CMakeLists.txt
* Update database_schema.h
* Remove logging function and methods
* DB version
* Cleanup SendPlayerHandinEvent
---------
Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
Co-authored-by: Aeadoin <109764533+Aeadoin@users.noreply.github.com>
* [Money Messages] Cleanup quest::givecash(), split, and task reward messages.
- Cleans up all the money messages using ConvertMoneyToString().
- Allows quest::givecash() to have optional parameters other than copper.
* Commification.
* Corpse messages.
* String IDs and cleanup.
* test
* complete
* Update effects.cpp
* Update spells.cpp
* Update effects.cpp
* [Spells] Support for bards using Disciplines while casting or /melody.
Support for spell field 'cast not standing' not allow casting from divine aura
* [Spells] Support for bards using Disciplines while casting or /melody.
DA bypass logic for spells with field 'cast_not_standing'
* updates
* stun and mez bypass
* Update spdat.cpp
* Update spdat.cpp
* Update spells.cpp
* clean
* requirement messages
* update
* pct
* save work
* Reform code 1_22_22
* updated
* update id to pointer
* Update spells.cpp
* rework 2
* update 1_23_22
* Update spells.cpp
* updates
* msg string works
* fix disc timers not be set
* more optimization
* update 1_23_22 PM
moved stop casting out
charm and harmony moved in
* update 1_25_22
rework of functions
* updates 1_26_22
* remove old checks
* gm override added for some
* update bard AA casting checks
* updates
* addbuff exception for bard
* debugs
* charm working
* update
* moved skill check here
* cast from item while singing
* lets not attack mounts
* instant cast items click
* aug clicks working
* aug tests
Bug? Cast time not display on aug clicks for bards
* aug recast from items semi ok
* added item timer function
* unified setting item recast timer
* clean up time
* update
* bard AA cast updates
* debugs removed
* debugs removed
* clean up
* clean up
* better placement of bindsight and numhits fix
* move and rename function
* Update spells.cpp
* add logs
* delete old DoCastingChecks
* Removed old bard pulse functions
* remove AEBardPulse and GroupPulse
* removed Raid::GroupBardPulse
* Pulse Restriction: Divine Aura
* Pulse Restrictions : Fear behavior
* Update spells.cpp
* Update spells.cpp
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
bots...
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
added recommended isvalidspell check
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
merged
* [Spells] Major update to Bard song pulsing, Bard item clicks while singing, and spell casting restriction logic.
removed defines since we have them as constants
Add Group and Raid method DoesAnyMemberHaveExpeditionLockout
This is required by some expeditions that perform a manual check for
custom dialogue (Ikkinz group expeditions)
This implements the new behavior from live's September 16, 2020
(test server's September 8, 2020) patch
Expeditions can be created even when the client's group or raid
exceeds the expedition's max player requirement. Members are added
until the max player count is reached and the rest are ignored.
Raid members are added ordered by their raid group number with
ungrouped members having the lowest priority
Rename expedition request method ValidateMembers to CanMembersJoin
Change some expedition messages to System color (live changes)
When the group is disbanded, set the leader to null.
When setting a new raid leader, make sure we have a new raid leader. If we don't, avoid a crash and disband the raid. It's better than zones falling apart, and will resolve itself on the next VerifyRaid call.
If a member zones, set the leader pointer to nullptr. This fixes an issue where the leader pointer is freed later (MemberZoned normally cleans up the Client object), but referenced by other entities, allowing the leader to be used in the same server process tick, post-cleanup - as the leader won't exist.
* Cache EntityList::GetRaidByClient
* Adjustments [skip ci]
* Update entity [skip ci]
* More cleanup [skip ci]
* More tweaks [skip ci]
* Cleanup [skip ci]
* Fix bugs with UCS reconnection on crash / exit, not adding soft deleted characters, put main loop on UV lib
* Reduce log spam that should be debugging; send keepalives to clients so that they properly prune from the connection list
* Shutdown the eventloop to properly shutdown the zone versus calling a hard exit
This still doesn't add support for /autosplit in a raid, how should that
work?
This changes the Raid::SplitMoney to take a group ID and fails when
provided with RAID_GROUPLESS. This does change behavior, but I'm not
sure if it was ever used so ...
Raid/Group Mana/Endurance updates should now update real-time once again
Fixed an issue with clients looking like they are 'skipping' when they are moving in view of another client
Fixed an issue with NPC's who are ghosted in plain view of a client when they are not really there