Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Fix EmpyreanCrucibleInstance#5

Open
w4terbomb wants to merge 17 commits into
beyond-aion:4.8beyond-aion/aion-server:4.8from
Aion-Eternal-Team:4.8Aion-Eternal-Team/aion-server-beyond:4.8Copy head branch name to clipboard
Open

Fix EmpyreanCrucibleInstance#5
w4terbomb wants to merge 17 commits into
beyond-aion:4.8beyond-aion/aion-server:4.8from
Aion-Eternal-Team:4.8Aion-Eternal-Team/aion-server-beyond:4.8Copy head branch name to clipboard

Conversation

@w4terbomb

@w4terbomb w4terbomb commented Jun 27, 2024

Copy link
Copy Markdown
Contributor

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:

  • Fix spawns
  • Fix time (rounds)
  • Added new stages and rounds
  • Refactored all code and logic
  • Added Kaisinel(Elyos) and Marchutan(Asmodians) [Retail]
  • Added random stages [Retail]
  • Added some NPCs that were missing.

(https://www.youtube.com/watch?v=dDTlv5iKlr4&list=PL7519772E07E8BE68&index=1)

@Estrayl

Estrayl commented Jul 1, 2024

Copy link
Copy Markdown
Member

Hey, I finally found the time to review your changes (couldn't test them though).

There are quite a few occurrences of SkillEngine.getInstance().useSkill(), which has some drawbacks. This should not be used for NPCs that can be CCed, as they will not be able to execute the skill properly. Also, this will interrupt any skill that is currently being cast.
A better approach is the skill queue we implemented, which can be accessed by calling getOwner().queueSkill(), so the NPC will only cast the skill when he is ready.
Except for a few cases, it is also completely possible to move any skill execution into the npc_skills templates, using min_hp, max_hp, min_time, max_time, chain_id, and conjuction_type.

If you need more information about the instance and the AIs, you would have to extract it from the 4.6 PTS leak.
Spawns and their conditions can be found in ./World/IDArena/world.xml. If you want to go the extra mile, you can also analyze the retail AIs (the leak with AI samples should contain one or more files with IDArena_). This may take some time to fully understand and replicate though.

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.

Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/SpectralWarriorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/WarriorPreceptorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/EmpyreanArbiterAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/EmpyreanArbiterAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/KingConsierdAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/MagePreceptorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/VanktristAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/PriestPreceptorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/RM1337AI.java Outdated
Comment thread game-server/data/static_data/npcs/npc_templates.xml
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/KingConsierdAI.java Outdated
# 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
@neon-dev
neon-dev changed the base branch from 4.8 to tmp June 15, 2026 22:36
@neon-dev
neon-dev changed the base branch from tmp to 4.8 June 15, 2026 22:36
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/MagePreceptorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/PriestPreceptorAI.java Outdated
Comment thread game-server/data/handlers/ai/instance/empyreanCrucible/StrangeCreatureAI.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/handlers/instance/crucible/EmpyreanCrucibleInstance.java Outdated
Comment thread game-server/data/static_data/npcs/npc_templates.xml
rrfarmer added a commit to rrfarmer/aion-server that referenced this pull request Jun 18, 2026
…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.
rrfarmer added a commit to rrfarmer/aion-server that referenced this pull request Jun 18, 2026
… 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.
rrfarmer added a commit to rrfarmer/aion-server that referenced this pull request Jun 18, 2026
…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.
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.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.