Skip to content

Alastor Antlion Bug Fixes - #11531

Open
KiplingFFXI wants to merge 2 commits into
LandSandBoat:basefrom
KiplingFFXI:Alastor-Antlion-Fixes
Open

KiplingFFXI wants to merge 2 commits into
LandSandBoat:basefrom
KiplingFFXI:Alastor-Antlion-Fixes

Conversation

@KiplingFFXI

Copy link
Copy Markdown
Contributor

I affirm:

  • I understand that if I do not agree to the following points by completing the checkboxes my PR will be ignored.
  • I understand I should leave resolving conversations to the LandSandBoat team so that reviewers won't miss what was said.
  • I have read and understood the Contributing Guide and the Code of Conduct.
  • I have tested my code and the things my code has changed since the last commit in the PR and will test after any later commits.

What does this pull request do?

This PR fixes a few bugs with Alastor Antlion and some Antlion files generally against retail captures. It does the following:

  • Feeler Antlion's script now runs the chain of events, similar to other similar NMs like this in the codebase.
  • Added idle despawn time for Alastor Antlion, so the ??? repops again.
  • Buried antlions don't cast, so fixed this bug.
  • Various adjustments to Alastor himself based on captures.
  • Mobskill audits for antlions based on captures.
  • Mob stat audits for all involved.
  • Added missing messaging.
  • Made it so ambushing antlions always come up when they engage even if the target is far away.

Steps to test these changes

Do the fight and see it all works as discussed above. Fight normal antlions that hide underground and see the same.

Captures

Alastor Antlion.zip

@Valentine-PHX

NM_Alastor_Antlion.zip

mob:setAnimationSub(4)
mob:setMobMod(xi.mobMod.NO_MOVE, 1)
-- mob:setStatus(xi.status.INVISIBLE) -- TODO: Implement once packet 0x00E is rewritten.
-- mob:setStatus(xi.status.INVISIBLE) -- Retail hides the whole antlion while it is buried, not just the name. Turn this on once a capture proves it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dont change this comment

@KiplingFFXI KiplingFFXI Sep 19, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, and addressed everything else

SpawnMob(alastorId, 120):updateClaim(target)
end
end
skill:setMsg(xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.BLINDNESS, 40, 0, 90))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why halve the duration?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purely based on the caps, the maximum duration it ever landed on either player was 90 seconds.

g_mixins.families = g_mixins.families or {}

g_mixins.families.antlion_ambush_no_rehide = function(antlion)
-- Underground the antlion keeps its name and stays targetable.

@Xaver-DaRed Xaver-DaRed Sep 18, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would just rename this mixin if this is only used for antlion nms that are poped, and as such, they dont need to be hidden

-- Engage one tick later so the ambush is not dropped for anyone who has not seen it yet.
-- Both can go once SpawnMob announces new mobs itself.
executioner:setPos(pos.x, pos.y, pos.z)
executioner:queue(0, function(executionerArg)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this qeue actually needed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I was testing this fight to bug fix, I encountered another bug where the damage from pit ambush will go off but the animation packet won't fire. it seems to only happen randomly or on the first use. I cannot reliably reproduce it. after speaking with @sruon about the causes and potential solutions we discussed there may be a core change to be had here but that a lua change making the ambush happen a tick later would solve the issue. this is because it seems like when a script pops a mob the server doesn't tell nearby players it exists until their own position packet gets processed, so anything the mob does in its first tick like pit ambush can get discarded


-- Same one tick wait as the Executioners.
alastor:setPos(pos.x, pos.y, pos.z)
alastor:queue(0, function(alastorArg)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question

SpawnMob(ID.mob.ALASTOR_ANTLION)

-- Same one tick wait as the Executioners.
alastor:setPos(pos.x, pos.y, pos.z)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we are already setting the spawn point, why do we need to also set its pos after spawn on the same point?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spawning it doesn't tell nearby players it's there until the next tick. setPos does it right away, so that was the intention with this

@KiplingFFXI

Copy link
Copy Markdown
Contributor Author

Dropped the lua queue after suggestion from sruon to update the pos to near the QM. It worked.

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.

2 participants