Conversation
Defines the packets of the raklion event, as expected by the season 6 client: the state info, current state, state change (group 0xD1, 0x10 to 0x12) and battle result (0x13), and the monster skill animation (0x69), which the client uses to show the skills of Selupan. The client structures aren't packed, so the remaining seconds of the state info are aligned at offset 8, and the ids of the monster skill animation at offsets 6 and 8. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hatchery of raklion (map 58) runs as a continuous event: the spider eggs appear, when they're destroyed Selupan appears, after some time the hatchery closes and only the players inside fight against Selupan. After the battle, the hatchery opens again. - RaklionPlugIn (feature + periodic task, configurable in the admin panel) - RaklionContext with the state machine of the event - SelupanIntelligence with the patterns by health, berserk and the skills - view plugin for the 0xD1 0x10-0x13 and 0x69 packets, D1 10 request handler - the monster spawns of the hatchery are spawned by the event (waves) - update plugin which adapts the spawns of existing databases Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The client searches the target of a monster skill by its id as it is, so the flag for a successful skill made it ignore the packet. The teleport of selupan moved it instantly, which the client shows as sliding; it's now a teleport. The attacks are used more often than the teleport. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Selupan vanishes with the effect of the teleport skill and appears at a diagonal position 3 to 6 fields away. It teleports a bit more often. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The messages are shown to all players of the game server, like the original game does, and the opening of the hatchery gate is announced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Like the original game, only players which entered the hatchery while it was open may stay there; others are moved to the entrance of raklion. After the battle, the remaining players are moved out after a configurable time. The hatchery opens again after 12 hours by default (like IGCN), which is configurable as well. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- the event doesn't run without the monster spawns of the hatchery, instead of announcing Selupan without spawning it - selupan isn't teleported when it died while vanishing - dead summoned monsters are removed from the event - remove unused usings and an obsolete todo - test that the data update can be applied twice Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The result and the time until the hatchery opens are shown in one message, so that they don't replace each other on the screen, and in the chat, so that they can be read again. The time is shown in hours and minutes. Players which try to enter the closed hatchery after the battle are told when it opens again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- players in the hatchery while it's open are allowed to stay, even when the tick sees them before the event handler of the map registered them - players which left the hatchery aren't counted as battle players - monsters summoned while the battle ended are removed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The Codacy findings are addressed, except S1128 (unnecessary The Azure build fails within 0 seconds, like on master and on the previous PRs, so it's the known issue of the build infrastructure. |
|
Hey there! You can see in this source that: There is already a base skill multiplier of 2 in OpenMU. |
Part of #23.
Summary
The Raklion hatchery (map 58) now runs the Selupan event, like the original game:
All times and values are configurable in the admin panel (plugin "Raklion Event").
Selupan
SelupanIntelligenceuses a skill every 1.5 seconds. Its pattern (1 to 7) depends on its remaining health(80/60/50/40/20/10 %). With each pattern, it gets additional damage (berserk) and more skills:
Simplifications: the poison and ice skills deal the normal damage of Selupan in an area, without a poison
damage over time or pushing the players back.
Hatchery access
Like the original game, only players which entered the hatchery while it was open may stay there. Others,
e.g. players entering while it's closed, are moved to the entrance of Raklion. After the battle, the remaining
players are moved out after a configurable time (
PlayerRemovalDelay, 5 minutes by default). Unlike theoriginal game, game masters aren't exempt from these rules.
Changes
RaklionPlugIn(feature plugin with periodic task and custom configuration),RaklionContext(state machine),
SelupanIntelligence,RaklionEventDefinition,IRaklionEventViewPlugIn.Monster.TeleportAsync: new public method, so that a monster can be teleported (MoveType.Teleport)instead of moved instantly, which the client shows as sliding.
D1 10(state info),D1 11(current state),D1 12(state change),D1 13(battle result)and
69(monster skill animation, used for the skills of Selupan). The structures of the client aren'tpacked, so some fields are aligned (documented in the packet descriptions).
RaklionEventViewPlugInand the handler of the C2SD1 10request, which was defined but unhandled.2 = Selupan, 3 = Coolutins summoned by Selupan. They were automatic spawns before.
AddRaklionEventUpdatePlugIn(version 116, mandatory, idempotent): changes the automaticspawns of the hatchery of existing databases to the waves. Without it, the event doesn't start and logs one warning.
the result of the battle and the time until the hatchery opens are shown in one new message, which is also written
to the chat, so that they don't replace each other on the screen.
Drops of Selupan are left to the configuration of each server (drop groups), like the difficulty.
Notes
configuration of public server files (IGCN). No code was copied or converted.
D1 10-D1 12; it ignoresD1 13, which is sent for completeness.MonsterSkillAnimation(0x69): the client searches the target by its id as it is, so the flag for a successfulskill (highest bit of the target id) isn't set.
Tests
Network.Packets.Tests), view plugin serialization, pattern/berserk/skill selection of the definition,data of a new database, and the update plugin (applied twice).
(all players died or left), the messages, the closed hatchery after the battle, the removal of the players and
the reopening.
🤖 Generated with Claude Code