Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GearSwap] Add Engage by ID Feature #2203

Open
wants to merge 1,328 commits into
base: dev
Choose a base branch
from

Conversation

Roland-J
Copy link
Contributor

@Roland-J Roland-J commented Jun 29, 2022

Engage by ID

This pull request adds an engage by ID feature to the GearSwap core, allowing players to engage alts with send without needing to rely on, and occasionally be impacted by, the potential unreliability of <bt> and /assist. It's also just plain faster.

This would make GearSwap not only allow players to cast spells by mob ID, but also engage by mob ID.

Safeguards:

This feature includes the following safeguards:

  1. It only functions while the player is idle or engaged (can't be dead, on a chocobo, fishing, etc)
  2. It does nothing if given an invalid ID (cannot find, no index, valid_target is false)
  3. It does not function while charmed
  4. Does not engage/switch-target to a mob that the player is already engaged to
  5. Will not produce a disengagement packet if the player is already disengaged
  6. It will stop itself from building a packet if it is unable to assemble all the required information
  7. It won't intercept the vanilla attack commands if they lack an ID (/attack, /attack on, /attack off, /attackoff)
  8. Interestingly, it filters out the vanilla "Attack" button's "/attack 12345678" text input, by utilizing the ffxi variable

Commands:

NOTE: Utilize a method, such as send's <tid> or <laststid> to obtain valid mob ids for these commands.

/attack 12345678 - toggles engagement on the given mob (only disengages if the given mob is already engaged)
/attack on 12345678 - engages or switches target to the given mob
/attack off 12345678 - disengages from the given mob only if it is already engaged by the current player
/attackoff 12345678 - disengages from the given mob only if it is already engaged by the current player
/attackon 12345678 - omitted, SE did not include this as a base command

How to Use:

  1. [Direct Targeting] Create a/multiple alias(es) such as "alias attackonall send @all input /attack on", then use "//attackonall <tid>" ingame.
  2. [Subtargeting] Create a macro such as "/target <stnpc>[newline]/con send @all input /attack on <laststid>"

Use Cases:

  1. Use "//send @all /attack on <tid>" to engage all alts on the given mob
  2. In a multi-mob engagement scenario, if mob 34567890 is being slept, use "//send @all input /attackoff <tid>" while targeting said mob to disengage all alts from the given mob without disturbing alts that are engaged to a different mob
  3. Use "//send charname /attack on <tid>" to have that specific alt engage or switch-target to the given mob

Behavior

You can expect much of the same behavior as when your client naturally generates these packets, but without your alts needing to do the preliminary targeting any longer.
Engage: Your client, all at once, automatically targets said mob (new), locks on, and engages.
Switch Target: Your client automatically switches to said mob (new), keeping your current targeting status (locked/unlocked).
Disengage: Your client disengages from said mob. (Does nothing if alt was engaged to a different mob.)

Noteworthy: While this feature doesn't check if the mob is claimed by another party/alliance, neither does the vanilla "Attack" command button. Add a logger to outgoing chunks and then try to attack a claimed enemy via the vanilla command button; you will notice that vanilla FFXI sends out an engage packet that the server rejects! It is for that reason that we didn't (potentially needlessly) complicate this aspect of the feature in comparison to vanilla FFXI's behavior in this same aspect.

KenshiDRK and others added 30 commits September 15, 2021 21:01
Update Slips libs for September FFXI update
Two new songs added in the September 2021 update. Names are not known yet.
…strosity-fix

Gearswap shortcuts monstrosity fix
Locals, spacing


dev table, format arg, no more length


the rest of the owl
A few functions for decoding dialog entries
Add blacklist function.
Adding Chemistry Set and Goujian to Slips library
Changed to use boolbits and added Master Levels menu display data
Change to use Refs
Re-add Master flags comment
StarlitGhost and others added 25 commits May 24, 2022 18:38
Trusts: Fix for player party member out-of-zone
Added DIKs for f13-f15.
DIKs for f11 & f12
Yush: Added a VerboseKeys setting to enable key display in each macro set.
There is no spell called "Lightning Threnody"
[fields lib] fix wrong 0x0E8 packet direction
Adds a function that can engage by ID, with safeguards
Adds to the command handler logic for engaging mobs by id
@Roland-J Roland-J changed the title Engage by id (gear swap) Add Engage by ID Feature to GearSwap Jun 29, 2022
@Roland-J Roland-J marked this pull request as ready for review June 29, 2022 22:37
@RubenatorX RubenatorX changed the title Add Engage by ID Feature to GearSwap [GearSwap] Add Engage by ID Feature Jun 29, 2022
Adds a clarity comment to the (potentially uncommon) usage of the ffxi var
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.