Skip to content

[lua, sql] Soulflayer family adjustments#9343

Draft
CriticalXI wants to merge 1 commit intoLandSandBoat:basefrom
CriticalXI:soulflayer_family
Draft

[lua, sql] Soulflayer family adjustments#9343
CriticalXI wants to merge 1 commit intoLandSandBoat:basefrom
CriticalXI:soulflayer_family

Conversation

@CriticalXI
Copy link
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?

  • Reviews all Soulflayer mob skills and sets their AOE types/ranges based on retail observations.
  • Implements the Immortal Shield TP move animation sub interaction through a mixin. Current TODO to rework this to a new magical only stoneskin effect.
  • Sets up Soulflayers to utilize the onMobMobskillChoose TP selection for several moves.

Sources

@CriticalXI
Copy link
Contributor Author

CriticalXI commented Feb 3, 2026

PLD needs a magical only stoneskin effect for the era module, thought I'd write the non-module use case for this effect as well for LSB.

then
allyCount = allyCount + 1
end
end
Copy link
Contributor

Choose a reason for hiding this comment

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

In general, this looks like bad juju, iterating over every single mob in a zone.

At least add the check for

if allyCount == 3 then
    break
end

inside the loop to stop itterating when not necesary

end

-- Add immortal shield if below max stacks
if shield < 2 then
Copy link
Contributor

Choose a reason for hiding this comment

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

If the mob changes animationSub when using immortal shield, you could just check that

table.insert(tpList, xi.mobSkill.IMMORTAL_SHIELD)
end

-- Add immortal mind if there are 3+ allies within 10 yalms
Copy link
Contributor

Choose a reason for hiding this comment

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

By allies, does this mean only other soulflayers?

If so you can use mob:getParty()

Copy link
Contributor

Choose a reason for hiding this comment

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

And if it includes other types, I propose

local allyCount          = 0
local entityInRangeTable = mob:getEntitiesInRange(mob, xi.aoeType.ROUND, xi.aoeRadius.ATTACKER, 10)
for _, otherMob in pairs(entityInRangeTable) do
    if
        not entity:isPC() and
        not:entity:isPet() and
        entity:isAlive() and
        entity:getID() ~= mob:getID()
    then
        allyCount = allyCount + 1
        if allyCount == 3 then
            break
        end
    end
end

}

-- Add mind purge only if target has dispellable effects
if target:hasStatusEffectByFlag(xi.effectFlag.DISPELABLE) then
Copy link
Contributor

Choose a reason for hiding this comment

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

Wondering if this should include target:hasStatusEffect(xi.effect.FOOD)

xi.mobSkill.TRIBULATION,
xi.mobSkill.IMMORTAL_ANATHEMA,
}

Copy link
Contributor

@Hatberg Hatberg Feb 10, 2026

Choose a reason for hiding this comment

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

Mahjlaef supposedly gains Reprobation at low health, guesstimate <20%

Image

https://youtu.be/o1Gud2Xn7fg?si=o7jo_QrC6H6lB31X&t=351

table.insert(tpList, xi.mobSkill.IMMORTAL_SHIELD)
end

-- Add immortal mind if there are 3+ allies within 10 yalms
Copy link
Contributor

Choose a reason for hiding this comment

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

Mahjlaef observed to also use Immortal Mind while solo in era footage:
https://youtu.be/o1Gud2Xn7fg?si=vBW5c9DNHCD4ranh&t=171
Could use retail recapture check

@github-actions
Copy link

This PR has been automatically marked as stale because
it has not had recent activity. It will be closed if no
further activity occurs.

@github-actions github-actions bot added the stale label Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants