[cpp, lua, sql] New family system migration (ecosystem/family/species)#10014
Merged
Conversation
Xaver-DaRed
reviewed
May 11, 2026
Xaver-DaRed
approved these changes
May 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I affirm:
What does this pull request do?
This PR migrates the mob family system to the new ecosystem/family/species.
Unfortunately this PR will be very annoying to review since it had to be done all at once. If it were to be done in pieces I would have to re-order the family table every single time the list gets bigger, which would mean I would be shifting and changing every id every time. If there is another way to PR this I am all up for changing it.
Working sheet: https://docs.google.com/spreadsheets/d/1J73Jwe9WPlMJ1nn5cmb7d7iU4xEJuVS27P9TcTTBcnw/edit?gid=1010722476#gid=1010722476
All Ecosystems Tab
new family list. This list incorporates every known Ecosystem / Family / Species that we currently know about. I have gone through each single one using both out database + jimmayus sheet and filled everything out to the best of my knowledge. All elements were corrected to what they should be (several bug fixes). Detectable were changed on a handful of mob and will be added into their NM luas respecitively. The auto-generated new inserts are all the way to the right.
Mob Pool Output Tab
This tab has been generated for the changes to the mob_pool.sql that need to happen for changing the entire mob family sql. I have gone through by hand (shoot me) all 7377 to make sure everything was converted over correctly with minimal mistakes. This shows the Pool ID/Name and the old -> new family IDs.
It updates mob_family_system, remaps mob_pools and mob_family_mods to the new family IDs, removes the old mob_super_family.lua enum, and repurposes the Lua family enums so scripts can distinguish between current getFamily() species IDs and getSuperFamily() family group IDs.
Updates all the mob skill restrictions, RoE/Magian-style super-family checks, Dynamis currency selection, Fomor hate/aggro, mob linking, special ranged/job behavior, avatar pet skill lists, ZNM soul plate logic, Jailer of Love pets, Tinnin behavior, Meteor damage branches, and several targeted family-specific script checks.
Also added !getmobfamily and !getmobspecies commands to make local validation easier.
Steps to test these changes
Things I tested:
-- No pools pointing at missing families
-- No family mods pointing at missing families
-- Spot-check family/super-family split
Expected: zero missing-family rows, and expected family/superFamily mappings for the sampled mobs.
Boot up server, see no errors for any mobs. ✅
Zone to several places with no errors. ✅
You can zone to any area/mobs that link and test them out to see if they do. I tested about 15 different areas. ✅
Test mobs from different specific families that share a superFamily:
Linking/Aggro
Test sublink groups:
Ghrah:
Tinnin:
Meteor:
Counterstance:
Jailer of Love pets:
Spawn RNG/NIN mobs from Aern, Quadav, Demon/Kindred, Fomor, Gigas, Troll.
RoE
ZNM Soultrapper: <-- doesn't actually work for me to test
Dynamis beastmen: