Skip to content

[cpp, lua, sql] New family system migration (ecosystem/family/species)#10014

Merged
Xaver-DaRed merged 1 commit into
LandSandBoat:basefrom
Frankie-hz:familyrework
May 11, 2026
Merged

[cpp, lua, sql] New family system migration (ecosystem/family/species)#10014
Xaver-DaRed merged 1 commit into
LandSandBoat:basefrom
Frankie-hz:familyrework

Conversation

@Frankie-hz
Copy link
Copy Markdown
Contributor

@Frankie-hz Frankie-hz commented May 11, 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?

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

SELECT mp.poolid, mp.name, mp.familyid
FROM mob_pools mp
LEFT JOIN mob_family_system mfs ON mfs.familyID = mp.familyid
WHERE mfs.familyID IS NULL;

-- No family mods pointing at missing families

SELECT mfm.familyid
FROM mob_family_mods mfm
LEFT JOIN mob_family_system mfs ON mfs.familyID = mfm.familyid
WHERE mfs.familyID IS NULL;

-- Spot-check family/super-family split

SELECT familyID, family, superFamilyID, superFamily, ecosystem
FROM mob_family_system
WHERE family IN ('Crab','Fomor','Ghrah','Imp','Horned_Imp','Tinnin','Carbuncle','Ifrit','Promathia')
   OR superFamily IN ('Crab','Fomor','Ghrah','Imp','Avatar','Behemoth');

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:

Crabs: normal crab plus any crab variant. ✅
Goblin/Moblin/Bugbear. ✅
Orc/Quadav/Yagudo in Dynamis. ✅
Aern plus Aern pets. ✅
Avatar pets: Carbuncle, Ifrit, Titan, Leviathan, Garuda, Shiva, Ramuh. ✅
Fomor and non-Fomor undead/shadow mobs. ✅
Expected: family-specific behavior uses getFamily(), broad grouping behavior uses getSuperFamily(). ✅

Linking/Aggro

Pull one linked-family mob near another same-superFamily mob. ✅
Confirm same superFamily mobs still link.✅ 
Confirm unrelated families do not newly link just because IDs changed. ✅

Test sublink groups:

Bat/Bat Trio/Vampyr. ✅
Goblin/Moblin/Bugbear.✅: 
Test Fomor in Lufaise Meadows/Sacrarium: ✅
Low fomor hate: normal Fomor should not aggro. ✅ 
Higher fomor hate: normal Fomor should aggro. ✅ 
NM Fomor should ignore the normal low-hate suppression. ✅

Ghrah:

Test Damnation Dive, Sickle Slash, Vorpal Blade across form changes. ✅
Expected: skills only fire in the intended Ghrah forms. ✅

Tinnin:

Nerve Gas should be allowed for Tinnin by pool ID. ✅
Polar/Pyric Blast should preserve the head/no-turn behavior. ✅

Meteor:

Behemoth-family caster damage uses Behemoth branch. :✅
Promathia uses Promathia branch.✅

Counterstance:

Bugbear gets the added ATTP +15. ✅
Non-Bugbear does not.  ✅

Jailer of Love pets:

Xzomit/Xzomit Child use Mantle Pierce. ✅
Hpemde uses Sinuate Rush. ✅
Phuabo uses Aerial Collision. ✅

Spawn RNG/NIN mobs from Aern, Quadav, Demon/Kindred, Fomor, Gigas, Troll.

Gigas uses Catapult behavior.  ✅
Troll uses Zarraqa standback behavior. ✅
Aern/Quadav/Demon use their special ranged skills.  ✅
Fomor RNG/NIN uses player-style ranged attack.  ✅
Trigger Eagle Eye Shot on listed families: Aern, Antica, Fomor/Shade, Gigas, Goblin/Moblin, Kindred/Demon, Lamiae/Merrow, Orc, Quadav, Troll, Yagudo, Maat.  ✅

RoE

!completerecord 1
!addkeyitem MEMORANDOLL
!completerecord 5
!addkeyitem CONCORDOLL
!exec player:setUnityLeader(xi.unityLeader.PIEUJE)
Select Unity -> vanquish something and go kill them
RoE family objectives: kill Rabbit, Bat, Crab, Bee, Crawler, etc. Confirm credit uses mobSuperFamily. ✅

ZNM Soultrapper: <-- doesn't actually work for me to test

Dynamis beastmen:

Orc drops Ordelle. :✅
Quadav drops Byne. :✅
Yagudo drops Tukuku. :✅

Comment thread scripts/zones/Full_Moon_Fountain/mobs/Ajido-Marujido.lua Outdated
@Xaver-DaRed Xaver-DaRed enabled auto-merge May 11, 2026 22:47
@Xaver-DaRed Xaver-DaRed merged commit b988e14 into LandSandBoat:base May 11, 2026
10 checks passed
@Frankie-hz Frankie-hz deleted the familyrework branch May 15, 2026 04:17
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