LandSandBoat / server

:sailboat: LandSandBoat - a server emulator for Final Fantasy XI. Just an X-34 landspeeder out for a drive.

Home Page:https://landsandboat.github.io/server/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🔨 The ability to tell trusts to stay away from the front of their target

noisiver opened this issue · comments

I affirm:

  • I understand that if I do not agree to the following points by completing the checkboxes my issue will be ignored.
  • I have read and understood the Contributing Guide and the Code of Conduct.
  • I have searched existing issues to see if the issue has already been opened, and I have checked the commit log to see if the issue has been resolved since my server was last updated.

Describe the feature

For a low to non-existent population trusts really are key, as one can imagine, and it would be really neat to be able to tell them to not stand in front of whatever mob they're attacking - unless they are the current target of that mob, of course. Too many times a healer or even ranged and melee DD/DPS dies because they insist on standing in front only to get hit by conal aoe.

For example, setting a flag in a specific trust Lua script would make the trust stay to the side of the mob, behind the mob or at least stay away from the front of it. Just like setting trust distance except it would be rotation in relation to the mob instead of distance from it, of course.

This kind of behavior is not something any trust has on the retail servers but I'm still hoping it could be considered. No trust should have this enabled by default, but hopefully that goes without saying.

Extremely unlikely we'd ever implement this. Adding custom logic like this is only useful for testing and balancing content, and a single tester + a party of Trusts hasn't really proven to be a fair and useful way of testing and balancing content. It also opens the door for people trying to turn this project into their vision of what they think FFXI should be, rather than doing that on their forks.*

(* of course this is entirely at our discretion and we're normally open to adding small and obvious improvements walled away behind settings, providing they're completely uninvasive and don't get in the way of the actual retail emulating code. In this case, the code is too arbitrary and invasive for us to consider)

These are the areas that you'd have to add extra logic to:

General trust "where should I stand, based on my type" logic:
https://github.com/LandSandBoat/server/blob/base/src/map/ai/controllers/trust_controller.cpp#L157

"I'm in place, but there are other players/trusts here, I should jiggle around and stand somewhere better":
https://github.com/LandSandBoat/server/blob/base/src/map/ai/controllers/trust_controller.cpp#L314

Gonna have to agree with Zach here and while the matter is already settled, I'd like to elaborate on why I think this is the right decision here.

If we did this, which nowhere do we have stuff trying to automatically flank a mob, we'd then probably down the road be answering if we should make tanks turn away from gaze attacks. This is the type of thing we can't be doing on upstream without some retail use case.

One of the criteria we have for the few things that we do allow to depart from retail (example: trust optional engage logic) is "does anything like it already happen anywhere on retail?" and another is "is this giving us excessive stuff we have to maintain?"

While retail trusts force the player to engage first, some other object don't. So it was simple to just apply the same behavior as an option. It didn't add a whole lot of extra effort, and we likely will never have to think twice about it or update it. Adding in a new behavior that nothing else has ever had on retail is a whole different situation. That'll have to be kept to peoples forks.

image