Fix EmpyreanCrucibleInstance#5
Fix EmpyreanCrucibleInstance#5w4terbomb wants to merge 17 commits into
Conversation
|
Hey, I finally found the time to review your changes (couldn't test them though). There are quite a few occurrences of If you need more information about the instance and the AIs, you would have to extract it from the 4.6 PTS leak. Ofc, you can contact me on discord if you need help analyzing the retail data. In summary, it would be nice to remove the SkillEngine calls and handle this with the SkillQueue instead. |
6bb2c97 to
693f741
Compare
# Conflicts: # game-server/data/handlers/ai/instance/empyreanCrucible/KingConsierdAI.java # game-server/data/handlers/ai/instance/empyreanCrucible/MagePreceptorAI.java # game-server/data/handlers/ai/instance/empyreanCrucible/PriestPreceptorAI.java # game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java # game-server/data/handlers/ai/instance/empyreanCrucible/WarriorPreceptorAI.java # game-server/data/static_data/npcs/npc_templates.xml
…er, HTMLCache) + refined blockers for the remaining 4 PeriodicInstanceManager (beyond-aion#3) + HTMLCache (beyond-aion#4) wired via real-data fixture seeds. The other 4 sit at a real floor: beyond-aion#1 SiegeService.initSieges + beyond-aion#5 PvpMapService need the heavy SPAWNS_DATA + world-map boot (beyond-aion#5 also breaks the empty-world invariant); beyond-aion#2 Housing is DB-required with no Java null guard; #6 PeriodicSaveService is a coordinated DI->singleton re-port. Documented precise blockers + recommended harnesses.
… spawn-backed harness for beyond-aion#1/beyond-aion#5 #6 PeriodicSaveService re-ported faithful 1:1 (commit 62c4083). Added a full read-only scope for the spawn-data-backed bootstrap harness that unblocks beyond-aion#1 SiegeService.initSieges + beyond-aion#5 PvpMapService together: substrate (SPAWNS_DATA/WORLD_MAPS_DATA loaders + SpawnEngine.SpawnAll) already done, work is fixture data-seeding (real spawns/ + world_maps.xml + NPC_DATA via the existing CopyRealFile mechanism) + flipping 2 wires + reworking the empty-world assert. Effort MEDIUM, recommend a NEW spawn-backed bootstrap test to preserve the minimal-fixture invariants.
…3 spawn-path faithfulness bugs New GameServerBootstrapTests.GameServerBootstrap_RealSpawnDataMaterializesNpcsIntoWorld: loads the REAL game-server data+cache (DataManager.LoadAsync(repoRoot)), brings up the real boot machinery (DataManager + World maps + IDFactory/ThreadPool bridges + AIEngine/ZoneService/GeoService), drives the faithful SpawnEngine.SpawnObject path over Sanctum's real SPAWNS_DATA, and asserts the World store materializes real Npc instances (357 NPCs incl. Euterpe 798173). End-to-end proof that the SPAWNS_DATA fix spawns NPCs (was 0). Three faithfulness fixes the spawn path surfaced: - GameServerBootstrapService: move engine-init to its Java-correct order (parallel, after DataManager, before the location-init/spawn services) - AIEngine must be up before any Npc spawn resolves its AI. - GameServerBootstrapService: bind IDFactory.RegisterInstance(_idFactory) after LockIds (every VisibleObject ctor reads IDFactory.GetInstance().NextId(); was a latent production boot NRE). - AIName: [AttributeUsage(Inherited=false)] to match Java's non-@inherited @ainame (SiegeNpcAI extends AggressiveNpcAI must NOT inherit "aggressive" -> was double-registering). Plus a defensive TypeLoad guard in OnClassLoadUnloadListener.DoMethodInvoke for the C# whole-AppDomain script scan (production unaffected). Siege/PvP wires (beyond-aion#1/beyond-aion#5) stay deferred in StartAsync: confirmed via Java source neither guards empty data (siege updateFortressNextState NREs on null getSiegeLocation; pvp init needs world map 301220000), so they cannot be unconditionally on under the minimal-fixture bootstrap. Full SpawnAll boot also needs a DB (beyond-aion#2 HousingService). Findings + recommended next documented in docs/next-slop-targets.md. Per-class GREEN: build 0, Bootstrap 8/8, Golden 167/167, RealStaticDataLoad 1/1.
I tried to do the best I could with the time I had, I wasn't able to test as much as I would have liked. I believe that adjustments and even npcAI may be missing. I need more information to be able to do a better job, if someone could test and point out the errors I could correct them all.
Changes:
(https://www.youtube.com/watch?v=dDTlv5iKlr4&list=PL7519772E07E8BE68&index=1)