Skip to content

[lua] Add ENM Timer NPCs and some additional ENM KIs#10027

Merged
Xaver-DaRed merged 1 commit into
LandSandBoat:basefrom
TiberonKalkaz:eminem_timer_npcs
May 19, 2026
Merged

[lua] Add ENM Timer NPCs and some additional ENM KIs#10027
Xaver-DaRed merged 1 commit into
LandSandBoat:basefrom
TiberonKalkaz:eminem_timer_npcs

Conversation

@TiberonKalkaz
Copy link
Copy Markdown
Contributor

@TiberonKalkaz TiberonKalkaz commented May 13, 2026

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?

  1. Adds the following NPCs which are ENM Timer NPCs. These NPCs will inform players of their current ENM cooldowns once the player has completed an ENM.
    1. Upper Jeuno - Moritz
    2. Windurst Woods - Istvan
    3. South Sandy - Ophelia
    4. Bastok Mines - Gregory
  2. Adds a global file - enm.lua
    1. Created to follow rule of 3/DRY.
    2. Can be used to migrate other shared ENM information in the future - hence the generic name.
  3. Adds the following ENM KI access:
    1. Tavnazian Safehold - Morangeart - Monarch Beard
      1. Enables Monarch Linn ENMs - No changes made to the actual ENM fights
    2. Lower Jeuno - Ghebi Damomohe - Astral Covenant
      1. Enables Test Your Mite - No changes made to the actual ENM fights
  4. Updates multiple DefaultAction luas to remove default only behavior for these NPCs

Breaking Change for Live Servers

  1. Modifies the following ENM NPCs to use VanadielTime() when working with cooldowns - fixing display errors.
    1. Attohwa Chasm - Jakaka
    2. Uleguerand Range - Zebada
    3. This change will break ENM Cooldowns for all players for these two NPCs
      1. Players will have values set far into the future vs VanadielTime().
      2. Advised to purge the following CharVars from all players:
        1. [ENM]MiasmaFilter
        2. [ENM]ZephyrFan

Known TODOs:

The following interactions are uncaptured at this time

  1. Ghebi Damomohe - Tenshodo Membership vs ENM
    2. Event Decompile and Testing with !CS show that the hidden quest selection and ENM information can be generated at the same time - however it is unknown if retail actually does this.
    4. Char Requirements:
    5. Rank 3 Jeuno Fame.
    6. Never started or completed Tenshodo Membership.
    7. Completed CoP up to gaining a PsoXja Pass.
    8. Has not completed all of COP - Ideally stopping right after Diabolos
    9. This will allow verification of filtering based on access.
    10. For now, this impl allows an active Tenshodo Membership to block ENM access.
  2. Ghebi Damomohe - Unrelated to this change - Missing CS 51
    12. While investigating decompiled events - I cam across a CS we are missing which appears to happen during Darkness Named.
    13. It seems trading the wrong chips (maybe the goblin sold chips) will cause the trade to be rejected.
    14. Can be captured by the same char that captures case 1
  3. Verification

Capture References:

Steps to test these changes

  1. Set Mission and/or KI progress to enable accessing ENM KIs
  2. Clear (delete) all ENM timer vars on the character (to test step 4)
  3. Navigate to one of the Timer NPCs (!pos commands are on each NPC)
  4. Note that the NPCs dont interact, and just give a line of dialogue. No intro with and acceptance dialog.
  5. Obtain an ENM KI - note which has been obtained
  6. Navigate to one of the Timer NPCs (!pos commands are on each NPC)
  7. Get the intro dialog and decline
  8. Cycle between the remaining NPCs, continually decline
  9. After checking all NPCs, accept
  10. In the ENM selections, try different combinations like hitting esc, declining, selecting ENMs on cooldown, and selecting ENMs not on cooldown.
  11. Note that only ENMs the player has access to populate the list.
  12. Note that the 3 ENMs with no pre-reqs are always available
  13. Repeat with different ENM KIs by obtaining them (or setting CharVars through Heidi)

@TiberonKalkaz TiberonKalkaz force-pushed the eminem_timer_npcs branch 5 times, most recently from eebbda8 to 085c354 Compare May 13, 2026 02:21
@TiberonKalkaz TiberonKalkaz marked this pull request as ready for review May 13, 2026 02:24
Comment thread scripts/globals/enm.lua Outdated
option <= 100
then
-- verified via capture, all NPCs share a single Intro CS. Once done at one NPC, the rest do not trigger it.
player:setCharVar('[ENM]TimerNpcIntroCS', 1)
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 this is going to be a forever variable, it may be better to use an entry of the "char unlocks" forever variables

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.

I see the email reply went to top level - not as a reply to comment: #10027 (comment)

Anyways, updated to use char unlocks - unique events. I really like this system.

Also, did some more testing on Ghebi and fixed a discrepancy I noticed when i went back re-watched my capture - Ghebi 1 2026 5 12 12 27. When a player has the ENM KI (Astal Covenant) Ghebi says nothing about it. This additional logic allowed for cleaning up the interaction nicely

@TiberonKalkaz
Copy link
Copy Markdown
Contributor Author

TiberonKalkaz commented May 14, 2026 via email

@TiberonKalkaz TiberonKalkaz force-pushed the eminem_timer_npcs branch 4 times, most recently from 9937fd4 to 7c3b218 Compare May 18, 2026 22:42
@Xaver-DaRed Xaver-DaRed enabled auto-merge May 19, 2026 16:48
@Xaver-DaRed Xaver-DaRed merged commit 834c533 into LandSandBoat:base May 19, 2026
10 checks passed
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