Skip to content

Summoner Improvements: Odin, Zantetsuken, and Atomos#10749

Open
genoxd wants to merge 7 commits into
LandSandBoat:basefrom
genoxd:base
Open

Summoner Improvements: Odin, Zantetsuken, and Atomos#10749
genoxd wants to merge 7 commits into
LandSandBoat:basefrom
genoxd:base

Conversation

@genoxd

@genoxd genoxd commented Jul 17, 2026

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?

I have fixed Odin/Zantetsuken for Summoner and adjusted the timings for Atomos.

  • Odin now correctly spawns, performs Zantetsuken, and despawns.
  • Odin no longer hits mobs with melee hits.
  • The death formula for Zantetsuken was incorrect. I have fixed it: KO chance = (MP/MaxMP)/NumberOfTargets.
    • Wiki Source
    • Also I've been SMN since the dawn of time and have used Odin excessively for solo Job Points and various content where he doesn't suck like Incursion.
  • I have updated the timing for Atomos so that it better matches retail.

Steps to test these changes

  • Switch to SMN level 99 with Odin

  • Have full MP

  • Use Astral Flow

  • Cast Odin on a single mob and confirm death rate is 100%

  • Cast Odin on multiple mobs and confirm death rate is not 100% (I repeated this to confirm that it can miss all mobs and hit some mobs)

  • Have low MP

  • Use Astral Flow

  • Cast Odin on a single mob and confirm death rate is NOT 100%

Edit: Forgot to mention I got the animation id from retail and I lined up a 5 mobs in a row then cast odin in a line to guesstimate the range. It's between 14-17 yalms based on which mobs got hit in my test, so I am guessing it's actually 15 yalms.

@Xaver-DaRed Xaver-DaRed added hold On hold, pending further action/info squash Reminder to squash commits before/on merge (you can do this, or maintainers will do this for you) labels Jul 17, 2026
@Omnione

Omnione commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

out of curiosity, have you tested Atomos being out of range or the target being dead before Deconstruction fires off?, from testing when i added this, if i had the Chronoshift ability fire off in the Deconstruction script he would not be able to cast Deconstruction so Chronoshift would not go off and Atomos would just stand there doing nothing as the despawn code never gets fired

@genoxd

genoxd commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

out of curiosity, have you tested Atomos being out of range or the target being dead before Deconstruction fires off?, from testing when i added this, if i had the Chronoshift ability fire off in the Deconstruction script he would not be able to cast Deconstruction so Chronoshift would not go off and Atomos would just stand there doing nothing as the despawn code never gets fired

Good catch! I didn't and Odin might have the same issue if a mob runs out of range. I'll test both today and fix if broken

@genoxd

genoxd commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

I did more testing around what happens if the target is out of range and if the summoner is out of range. I've updated this to reflect what I saw on retail.

Also fixed the issue where if the ability fails to fire the pet could end up in a bad state (never depsawning).

Odin: Odin always despawns 15 seconds after being summoned even if he doesn't perform Zantetsuken.

Atomos: Atomos always despawns ~17 seconds after being summoned. Deconstruction is used if the target is in range. Chronoshift is used even if Deconstruction isn't used.

Edit: I also tested killing the mob before Atomos does Deconstruction and it still uses Chronoshift, same behavior as being out of range

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.

"Damage to NMs caps at 9999 or 10-20% of their current HP, whichever is lower. However, percentage damage multipliers are applied after this calculation. This is why damage may exceed 9999."

Unless you checked it on retail, be sure to clamp the damage to 10% of the targets HP vs NMs.

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.

Sure, I didn't modify the damage portion but I can attempt to fix that too

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.

Follow up question: Are there any relatively easy NMs to access on retail that we have accurate stats for? If I'm going to redo the damage equation, I'd like to have a baseline to work with ideally


returnParam = xi.effect.KO
else
petskill:setMsg(xi.msg.basic.EVADES)

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.

JA_MISS_2                       = 324, -- <user> uses <ability>, but misses <target>. (includes target name)
Image

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.

Unsure what you're asking for here

Comment thread sql/pet_skills.sql
INSERT INTO `pet_skills` VALUES (668,0,171,'deconstruction',0,0,21,2000,1000,4,323,@SKILLFLAG_BLOODPACT_RAGE,0,13,0,0,0,0);
INSERT INTO `pet_skills` VALUES (669,0,172,'chronoshift',1,14,0,2000,1000,3,283,@SKILLFLAG_BLOODPACT_WARD,0,13,0,0,0,0);
-- 670: Zantetsuken 10y (Radius 10y)
INSERT INTO `pet_skills` VALUES (670,0,151,'zantetsuken',4,15,15.0,2000,1000,4,277,@SKILLFLAG_ASTRAL_FLOW | @SKILLFLAG_BLOODPACT_RAGE,0,13,0,0,0,0); -- Conal 15y, anim/msg from capture

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.

Do you have a capture proving this is 15y on both range and radius?

I can only prove 10y so far on both range and radius (the same values the DATs claim). Given it's a special type of move I'm willing to believe they may not be right.

Furthermore 15y isn't used by any other ability in the game (closest values would be 14 or 16).

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 stated it in the PR: "Forgot to mention I got the animation id from retail and I lined up a 5 mobs in a row then cast odin in a line to guesstimate the range. It's between 14-17 yalms based on which mobs got hit in my test, so I am guessing it's actually 15 yalms."

If all other abilities are 14 or 16, then I don't have enough evidence to prove it. It killed something at 14, it did not kill something at just over 17. It could be 16. I can check later. Radius doesn't make sense since this is a conal attack

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hold On hold, pending further action/info squash Reminder to squash commits before/on merge (you can do this, or maintainers will do this for you)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants