Commit Graph

133 Commits

Author SHA1 Message Date
nytmyr 2301b91e77 Move bot spdat functions to spdat_bot 2025-01-21 13:13:30 -06:00
nytmyr 5de72999fe Add GetParentSpellType when checking spelltypes for idle, engaged, pursue CastChecks. 2025-01-20 19:29:57 -06:00
nytmyr 3040d3bc97 Move various Bot<>Checks logging to BotSpellChecks 2025-01-20 13:03:58 -06:00
nytmyr 01afd68230 Remove bcspells, fix helper_send_usage_required_bots 2025-01-11 01:40:32 -06:00
nytmyr 95c1bb6883 code cleanup 2 2025-01-10 11:45:00 -06:00
nytmyr d13a48fc93 cleanup 2024-12-30 13:02:06 -06:00
nytmyr a0c2abfedf Implement ^discipline 2024-12-29 20:01:18 -06:00
nytmyr e652bc02b9 Allow pet types to ^cast, prevent failure spam, add cure check 2024-12-24 08:56:23 -06:00
nytmyr 69b4c3a5a4 Add _tempSpellType as placeholder for any future passthru 2024-12-22 22:39:27 -06:00
nytmyr 83d41f00d2 Implement AIBot_spells_by_type to reduce looping when searching for spells 2024-12-22 22:38:52 -06:00
nytmyr 39b1f57ef3 comment out precheck, delays, thresholds, etc logging
missed some in "organize some checks in IsImmuneToBotSpell"
2024-12-22 00:29:58 -06:00
nytmyr e4e7a30e71 organize some checks in IsImmuneToBotSpell 2024-12-22 00:22:10 -06:00
nytmyr d05dcb5d60 raid optimizations 2024-12-20 21:21:14 -06:00
nytmyr a46478468c Remove Bot_AICheckCloseBeneficialSpells and use AttemptCloseBeneficialSpells for better performance 2024-12-20 13:10:50 -06:00
nytmyr 62111da16d Fix ^petsettype to account for usable levels of spells and remove hardcoded level limits. 2024-12-20 13:09:42 -06:00
nytmyr 665d7e3641 Combine GatherGroupSpellTargets and GatherSpellTargets 2024-12-20 09:50:07 -06:00
nytmyr 7870499fa5 merge with prev 2024-12-20 09:44:00 -06:00
nytmyr e710fbea34 Fix performance in IsValidSpellRange by flipping HasProjectIllusion 2024-12-20 09:43:51 -06:00
nytmyr 66356a3d6e missing from GetChanceToCastBySpellType 2024-12-20 09:43:00 -06:00
nytmyr e031b4d1e0 Change GetSpellListSpellType to GetParentSpellType 2024-12-20 09:42:01 -06:00
nytmyr 322f8c5ffd Implmenet PetCures, add some missing types for defaults/chance to cast 2024-12-20 09:38:40 -06:00
nytmyr 54b9825537 Add PercentChanceToCastGroupCure 2024-12-20 09:33:47 -06:00
nytmyr eaa1f67802 cls cleanup 2024-12-20 00:44:49 -06:00
nytmyr 83979ed273 CanUseBotSpell for ^cast 2024-12-12 22:14:11 -06:00
nytmyr f715924b99 More castcheck improvements 2024-12-12 22:14:11 -06:00
nytmyr 92ba83e308 rewrite GetCorrectSpellType 2024-12-12 22:14:09 -06:00
nytmyr 9d5b679fc4 Add more checks for CommandedSubTypes::AETarget 2024-12-12 22:14:08 -06:00
nytmyr bf4f2f5623 Add lull/aelull to ^cast 2024-12-12 22:14:08 -06:00
nytmyr 2bffc1b79c Remove misc target_type checks 2024-12-12 22:14:07 -06:00
nytmyr a8f048c4e4 Correct IsValidSpellRange 2024-12-12 22:14:05 -06:00
nytmyr 30f1960003 add timer checks to Idle/Engaged/Pursue CastCheck to early terminate 2024-12-12 22:14:05 -06:00
nytmyr 625c1fb06b Move HateLine to a better ID 2024-12-12 22:14:04 -06:00
nytmyr 8c923a6c51 rename BOT_SPELL_TYPE functions 2024-12-12 22:14:02 -06:00
nytmyr cd3cd9ef1a commanded spell fixes. All should be working now minus depart 2024-12-12 22:13:26 -06:00
nytmyr 4bb1fd9dcd add aehateline spell type 2024-12-12 22:13:26 -06:00
nytmyr b2590b5056 Implement more commanded types properly, move shadownight hate to hateline type...
Add incapacitated checks to casting logic and checks.
Add candocombat zone check, summon other's corpse for bot, in/out combat spell checks, mute checks, level restriction
2024-12-12 22:13:24 -06:00
nytmyr ee9651b4f1 implement commanded cast types 2024-12-12 22:13:18 -06:00
nytmyr 484b88ddbc misc cleanup 2024-12-12 22:13:04 -06:00
nytmyr 2042e95163 Add AllowAIMez to allow bot auto mez to be toggled 2024-12-12 22:13:01 -06:00
nytmyr 1c8da32f72 add PercentChanceToCast rules for AE and group spells 2024-12-12 22:13:01 -06:00
nytmyr b0768454c1 adjust spell hold checks to rely on caster and
Implement pet resist buffs and pet damage shields
2024-12-12 22:13:00 -06:00
nytmyr 9b87aaf39b More fixes
TGB, ^cast, group/ae checks, in group/raid checks, inviting others bots to group, group disband fix, prevent rogue bs spam, ^follow fixes and cleanup, follow owner only by default when joining raid/group, group buff fixes for bots, range fixes for group buffs
2024-12-12 22:11:23 -06:00
nytmyr 6574f780db Bot Rework 2024-12-12 22:10:36 -06:00
Alex King 7dfda95d86 [Bug Fix] Fix Bot Spell Entries IDs Capping at 32,767 (#4444)
* [Bug Fix] Fix Bot Spell Entries IDs Capping at 32,767

* Fix manifest
2024-08-26 20:29:50 -05:00
Alex King a85f4fb703 [Cleanup] Cleanup Stance Code (#4368)
* [Cleanup] Cleanup Stance-based Code

* Command

* Update emu_constants.h

* Update stance.cpp

* Cleanup
2024-07-02 21:50:34 -04:00
Alex King 8640776a21 [Cleanup] Cleanup Body Type Code (#4366)
* [Cleanup] Cleanup Body Type-based Code

* Update bodytypes.cpp

* Final

* Update body_type.cpp

* Cleanup

* Cleanup

* Formatting

---------

Co-authored-by: Akkadius <akkadius1@gmail.com>
2024-06-02 04:25:06 -04:00
Alex King 76b9ce0ac1 [Cleanup] Cleanup Special Ability Code (#4365)
* [Cleanup] Cleanup Special Ability-based Code

* Update emu_constants.cpp

* Update emu_constants.cpp

* Update emu_constants.cpp

* Update special_ability.cpp

* Cleanup

* Update emu_constants.cpp
2024-06-01 18:20:43 -05:00
Alex King abdec39cdd [Quest API] Add Archetype Methods to Perl/Lua (#4181)
* [Quest API] Add Archetype Methods to Perl/Lua

- Add `$mob->GetArchetypeName()`.
- Add `$mob->IsIntelligenceCasterClass()`.
- Add `$mob->IsPureMeleeClass()`.
- Add `$mob->IsWisdomCasterClass()`.

- Add `mob:GetArchetypeName()`.
- Add `mob:IsIntelligenceCasterClass()`.
- Add `mob:IsPureMeleeClass()`.
- Add `mob:IsWisdomCasterClass()`.

- Allows operators to use mob archetypes to perform different operations.
- Add a namespace for archetypes instead of constants.
- Utilize `IsIntelligenceCasterClass()`, `IsPureMeleeClass()`, and `IsWisdomCasterClass()` where necessary.
-

* Update mob.cpp
2024-03-23 14:37:35 -05:00
Alex King 122fe398b4 [Languages] Cleanup language constants, use repositories (#3838)
* [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
2024-01-06 22:17:10 -06:00
nytmyr bdf5f8b4a3 [Bots] [Quest API] Add ^clickitem, ^timer, fix GetBestBotSpellForCure (#3755)
* [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>
2023-12-17 14:53:34 -05:00