trickerer / Trinity-Bots

NPCBots for TrinityCore and AzerothCore 3.3.5
https://github.com/trickerer/TrinityCore-3.3.5-with-NPCBots/
473 stars 156 forks source link

Known Issues/Feature Requests (from Yunata's testing) #20

Closed YunataSavior closed 3 years ago

YunataSavior commented 4 years ago

I don't want to spam the "Issues" page, but I want to report a multitude of issues that I've encountered when playing this mod:

I'll edit this post and strikethrough issues that get resolved; I'll leave this Issue open until all issues become resolved.

Bug (B) List

  1. NPC Bots fall through the floor in Gundrak Bots part fixed in ed1aa713c1
  2. When swimming, bots sink to the floor of the pool/sea/ocean/etc. Not a bots issue
  3. Shamans using lust/hero at stupid times Bots are stupid - disable the ability and use cast orders
  4. In Azjol-Nerub, pulling the Anub Crushers up the ramp crashes the core Fixed
  5. Disappearing NPCbots on login Most likely fixed in f4f66672a5
  6. Arms Warrior bot with Tank role disabled still pulls threat off the tank

Feature Request (FR) List

  1. Toggling certain types of CCs amongst party members Spell disables by category implemented
  2. Incremental Updates #73
  3. Dialog options to create/customize NPC bots with the NPC Bot Vrykul lady rejected

Bugs

NPC Bots fall through the floor in Gundrak

I've observed the NPC bots failing to path properly in the following two places:

(1) When entering the Tomb of the Ancients from the East side (see https://www.wowhead.com/gundrak#map:4416.1 for reference), they fall through the floor. (2) The NPC bots fail to properly follow you up the staircase to the final boss area; they instead fall through the floor and into the pool below.

When swimming, bots sink to the floor of the pool/sea/ocean/etc.

Title. The expected behavior is they will stay at the same height as you....

Shamans using lust/hero at stupid times

I know the bots are "dumb", but one specific case stands out amongst all: in the Culling of Stratholme instance, shamans pop lust/hero when surrounded by Risen Zombies (as a reminder, these are a few hundred health non-elite mobs littered around the first part of the instance). If you'd rather not code complex logic for when to use lust/hero for shamans, could you implement an NPC bot command that is issued by the player to signal when to lust? If there is already a command for that, then I'll mark this section as resolved.

In Azjol-Nerub, pulling the Anub Crushers up the ramp crashes the core

Title. IDK if this is solely the fault of the core, or if it's caused by the Trinity Bots.

Also, semi-related, bots fall through the floor sometimes and start whacking Hadronox before defeating the crushers.

Disappearing NPCbots on login

Alright, I'll try my best to describe this particular bug. I'm not exactly sure how to reproduce this, but I'll state what happened:

I set MaxBots=4 and had the following group composition: (1) Warrior (2) Priest (3) Druid (4) Hunter (with a pet) I was unmounted, so the hunter brought out her pet, then I logged out and shut down the server. Then, the next morning, I started up the server and logged in, but the Warrior never reappeared! The entries for the Warrior still populate each table, and I've tried going to where the Warrior SHOULD BE (by looking in world.creature and TPing to the XYZ coords (yes, I used the correct map ID)), but the Warrior is invisible and untargetable!!

I'd like your help with debuging this, so please add me on Discord/etc.

Solved: Arms Warrior bot with Tank role disabled still pulls threat off the tank

I'm spamming my 69696 rotation with Righteous Fury active, yet mobs are still being attracted by the Warrior.

Use "/maintank" or "/mt" on yourself.

Feature Requests

Toggling certain types of CCs amongst party members

One REALLY ANNOYING THING I'm encountering is that: when running dungeons, certain party members cast Fear spells, and this messes up the mobs/npcbots, causing us to pull a ton of trash (or even the bosses), which leads to us wiping.

I'd like the option of toggling what CCs your minions can/cannot use, such as:

.npcbot command disable fear

Incremental Updates

Right now, you are publishing monolithic .patch files; could you also create a .patch file that contains only the changes between commits? I don't want to have to spend 20 minutes recompiling the entire core anytime you only modify a total of 5 C++ lines.

Same goes for SQL update files.

Dialog options to create/customize NPC bots with the NPC Bot Vrykul lady

Rather than having to manually insert entries into the corresponding SQL tables yourself, why not have a dialog tree for the Vrykul lady (id 70000) that allows you to pick-and-choose elements to create custom NPCbots.

In the dialog tree, you would have:

  1. "Create a new NPC bot" (at the bottom of the menu that shows up when you initially right-click the vrykul lady).
  2. "Select your gender" Male | Female
  3. "Select your class" Warrior | Mage | etc
  4. "Select your race" (dependent on the answer for 3)
  5. "Customize your face" 1 | 2 | 3 | 4...
  6. (Further customization options)
  7. "Name your NPC bot" and pop out a text box.
  8. Confirmation box that lists the properties of your NPC bot.

Etc

More to come; will update.

PS: Do you have a Discord/IRC to communicate about this project? I'm fluent in C++/Unix/SQL, so if you'd like me to debug things on my end, I'm very capable of doing so :)

trickerer commented 4 years ago

Please add a task list at the start of your post so it's easier to follow

YunataSavior commented 4 years ago

I've added a list and another issue I've ran into (threat management by bots)

trickerer commented 4 years ago

another issue I've ran into (threat management by bots)

IIRC, bots don't know if player is a tank unless you are in a raid and assign this role (/maintank, /mt)

YunataSavior commented 4 years ago

Alright, so that fixed my problem; I'll edit the post.

One other thing, how do I make a raid group with bots? I tried converting a party to a raid, then hiring another bot, but I cannot invite that bot into my party.

I have the option enabled that enables bots to go inside raid instances btw.

trickerer commented 4 years ago

What do you mean 'cannot invite that bot into my party'? You don't have that option in gossip or what?

YunataSavior commented 4 years ago

Actually, I am able to hire them into the party and bring them into raids, but I'm unable to have raid frames of bots past a team of 5

trickerer commented 4 years ago

https://github.com/trickerer/Trinity-Bots#raid-group-frames

YunataSavior commented 4 years ago

Regarding having shamans pop hero/lust, by default, they shouldn't automatically pop lust.

Instead, have the player character emote "/charge" (which can target anyone or not), which prompts the shaman to pop lust.

trickerer commented 4 years ago

Regarding having shamans pop hero/lust, by default, they shouldn't automatically pop lust.

Instead, have the player character emote "/charge" (which can target anyone or not), which prompts the shaman to pop lust.

Not the best idea. Probably better would be to make bots react to chat commands (for variety), plus the whole thing requires allowing player to disable autocast / enable manual cast of certain spells. Maybe spell could be scheduled to be casted by first available bot or something but that's gonna take way more time.

YunataSavior commented 4 years ago

@trickerer I'm going to bump the issue of disappearing NPC bots because the issue happened to me again :confused:

One hypothesis, by looking at world.creature, is that the NPC bot travels from the logout location to its "home" location. In travel, I think it dies or something; nevertheless, when you restart the server, the NPC doesn't show up, and when you teleport to the NPC bot's location (using .go xyz), the NPC isn't there.

What controls making NPC bots visible/invisible? What code can I inject into the core, or what SQL/server commands can I use, in order to go about fixing this locally? If I can fix this locally, I can 100% determine (1) the exact cause of this bug, and (2) write code to avoid this issue from ever happening.

trickerer commented 4 years ago

I vaguely remember struggling with saving dead bots like this

Try to comment out this as a tempfix. It will make bots always teleport home instead of traveling by foot

YunataSavior commented 4 years ago

I've commented out that if () statement, but the NPC is still invisible and stuck at the coordinate mentioned above.

For reference, here's the bot's entry in world.creature:

mysql> SELECT * from creature WHERE id=70180;
+--------+-------+-----+--------+--------+-----------+-----------+---------+--------------+------------+------------+------------+-------------+---------------+-----------------+-----------------+-----------+---------+--------------+---------+------------+--------------+------------+---------------+
| guid   | id    | map | zoneId | areaId | spawnMask | phaseMask | modelid | equipment_id | position_x | position_y | position_z | orientation | spawntimesecs | wander_distance | currentwaypoint | curhealth | curmana | MovementType | npcflag | unit_flags | dynamicflags | ScriptName | VerifiedBuild |
+--------+-------+-----+--------+--------+-----------+-----------+---------+--------------+------------+------------+------------+-------------+---------------+-----------------+-----------------+-----------+---------+--------------+---------+------------+--------------+------------+---------------+
| 213869 | 70180 |   1 |      0 |      0 |         1 |         1 |       0 |            0 |   -4436.68 |   -1017.46 |   -47.7864 |     5.25797 |           300 |               0 |               0 |     12600 |       0 |            0 |       0 |          0 |            0 |            |             0 |
+--------+-------+-----+--------+--------+-----------+-----------+---------+--------------+------------+------------+------------+-------------+---------------+-----------------+-----------------+-----------+---------+--------------+---------+------------+--------------+------------+---------------+

This roughly corresponds to Thousand Needles. The bot's home location is within Thrall's throne room in Orgrimmar, and I logged out in Silithus.

trickerer commented 4 years ago

That change only prevents this from happening again (if issue is what I think it is). Try .npc move. If this doesn't help, you'll have to fix coordinates manually. Also check in GM mode if bot is there (after .npc move) with infinite (or very long) respawn time.

YunataSavior commented 4 years ago

Moving the NPC bot into Thrall's throne room works (it updates the SQL entry), but toggling GM mode does not make the NPC bot appear.

How do I go about checking respawn timers?

For further debugging information, even when updating characters.characters_npcbot and resetting the "owner" column to 0, the NPC Hiring Valkyr does not offer the NPC bot that's having this issue for sale.

trickerer commented 4 years ago

If he does not appear right away he will after server restart. He may need to be respawned manually (.npc info may show current respawn timer being ridiculously big) but after that everything should be fine.

The whole problem must be with respawn time not being saved at death (or loaded at server start)

YunataSavior commented 4 years ago

After a bit of finesse, I managed to get the NPC bot back, just letting you know.

I did reboot the server a couple of times while issuing ".respawn" next to where I put the NPC bot.

Parkan1986 commented 4 years ago

Sometimes i have npcbot dissappearing on login or server start,but i have fix this problems with one solution: 1.Shut down server. 2.using navicat enter to character DB and find respawn table,use command to empty this respawn table. 3.after server start,npcbot appear again(and so all killed npcs too)

Also npcbots can disappear if player log out from raid dungeons or some dungeons like blackwing lair or upper or lower blackrock spire,and only that thing which i described later fixed npcbots disappearing

Parkan1986 commented 4 years ago

Вообщем проверить изчезаемость ботов можно даже так,взять пати из 4 ботов,телепортнуться в blackwing lair.Закрыть клиент игрока с помощью альт+ф4,зайди на сервер снова-боты пропадут и не будут появляться до тех пор пока не сделать очищение в ДБ characters ,папка\table respawn.ЕЕ очищаем и боты после рестарта сервера появляются.

trickerer commented 4 years ago

I've been looking at what I was doing with bots before switching to other projects and it seems like actually I had a fix for bots disappearing for 2 months now, but never pushed it (it is for 2013 branch). I'll port it soon.

trickerer commented 4 years ago

For (1) and (2): unfortunately it is hard to tell what produces more pathing issues - bots' movement algorithms or native TC pathfinding. Bots do much more pathfinding than normal mobs or pets, thus exposing existing flaws in pathing system. Over the years I've seen countless pathdinding / map height calculation fixes, here is another one: 9f0b5526f0. MMaps generation settings could also affect this, but it's probably less relevant.

trickerer commented 4 years ago

I've been trying to produce Anub'ar Crushers crash for a bit, but I was getting crashes even without bots. Crash was caused by Crushing Webs spell dot tick when Hadronox and all trash despawn (invalidates aura caster pointer).

trickerer commented 4 years ago

Toggling certain types of CCs amongst party members

Right now there is a way to disable certain spells (Manage abilities -> manage allowed abilities), though these settings are not saved between server restarts. Also, gossip cannot hold more than 32 items and some classes have more spells than that, especially classes with CC spells.

Maybe I could split the list by categories or just add a submenu with CC spells only.

Parkan1986 commented 4 years ago

Maybe I could split the list by categories or just add a submenu with CC spells only.

Если есть возможность сделать в меню диалогов подменю для каждой ветки талантов/заклинаний у каждого типа ботов чтобы лучше кастомизировать их способности.Но я так понимаю настроив бота к примеру запретить использовать страх, то после перезагрузки сервера их настройки сбрасываются?

trickerer commented 4 years ago

Maybe I could split the list by categories or just add a submenu with CC spells only.

Если есть возможность сделать в меню диалогов подменю для каждой ветки талантов/заклинаний у каждого типа ботов чтобы лучше кастомизировать их способности.Но я так понимаю настроив бота к примеру запретить использовать страх, то после перезагрузки сервера их настройки сбрасываются?

Пока да. Насчет веток не согласен, ручного распределения талантов пока нет, а в(ы)ключать спеллы лучше по их применению: контроль, дамаг, хил, диспел и т.д. (например)

trickerer commented 4 years ago

(2) Worth mentioning: TC pull 24020

jiayuandeng commented 3 years ago

I got the exact same error "Disappearing NPCbots on login". I did the following attempts to remove the bot (entry 70228) but all failed:

  1. I used command .npcbot delete 70228. This does not work as the command only accepts selected target.
  2. I used command .npcbot spawn 70228. Getting an error saying the bot already exists.
  3. I deleted 70228 in table characters_npcbot (as it is reported working in this post), and tried .npcbot spawn 70228, getting an error saying the bot already exists in creature table.
  4. I tried to find the bot in creature table but failed, as I don't have the information to identity the row.
  5. I tried what Parkan1986 suggested: empty this respawn table. Now the server is unable to start with error:
Starting NpcBot system...
>> Bot appearance data loaded
>> Bot race data loaded
>> Loaded 8 bot data entries

c:\users\conan\desktop\trinitybuilderv3\trinitybuilder\source\tc_npcbots\src\server\game\ai\npcbots\bot_ai.cpp:9590 in b
ot_ai::InitFaction ASSERTION FAILED:
npcBotData && "bot_ai::InitFaction(): data not found!"
Me: MapID: 0 Map name: 'Eastern Kingdoms' X: -10511 Y: 1055.97 Z: 58. 1259 O: 5.80435
GUID Full: 0xf1300112540000f7 Type: Creature Entry: 70228 Low: 247 Entry 70228
Name: Nara
IsAIEnabled: true DeathState: 0 UnitMovementFlags: 0 ExtraUnitMovementFlags: 0 Class: 8
MoveSpline
spline Id: 0
flags: Done

time passed: 0
total time: 0
spline point Id: 0
path point Id: 1
mode: Uninitialized
points count: 0
AIName: ScriptName: priest_bot WaypointPath: 0 SpawnId: 213827

I want to 1) fix the server starting error and get server running again; 2) find a workaround of the bot missing issue (being able to delete it and respawn it). Any help would be appreciated.

trickerer commented 3 years ago

DELETE FROM creature WHERE id = 70228;

jiayuandeng commented 3 years ago

Thanks for the prompt reply! That did work.

trickerer commented 3 years ago

I take the liberty of editing the OP since author seems to be inactive for more that half a year now.