Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e590602
Add website API: online characters, account session state and disconnect
OviedoMarcelo Sep 25, 2026
23ce4aa
Add weekly quests plugin with configurable objectives and rewards
diegoamatte Sep 25, 2026
ba3d0f3
feat: Add weekly quests list view & packet
diegoamatte Sep 26, 2026
91b1cdf
Merge pull request #1 from OviedoMarcelo/feature/weekly-quests
diegoamatte Sep 26, 2026
5389904
feat: Add weekly quests and stacked modal support
diegoamatte Sep 26, 2026
815f10c
feat: Support multi-step quest objectives and periods
diegoamatte Sep 26, 2026
9e56707
Merge pull request #2 from OviedoMarcelo/feature/weekly-quests
diegoamatte Sep 26, 2026
256836c
Merge branch 'master' of https://github.com/OviedoMarcelo/OpenMU
diegoamatte Sep 27, 2026
9120a67
fix: Remove stray closing tag from plugin resources
diegoamatte Sep 27, 2026
5435559
Admin panel: Spanish info with impact per field, grouped navigation w…
OviedoMarcelo Sep 26, 2026
869127c
Admin panel tables: go back to the first page when a refresh finds th…
OviedoMarcelo Sep 26, 2026
2524a23
Merge pull request #3 from OviedoMarcelo/feature/admin-panel-es-on-ma…
OviedoMarcelo Sep 27, 2026
ebf6912
feat: Send skill requirements to the client after the login
diegoamatte Sep 27, 2026
8c23be1
Merge pull request #4 from OviedoMarcelo/feature/server-skill-require…
diegoamatte Sep 27, 2026
70167ca
Add Founder Experience Bonus plugin: small XP bonus for accounts regi…
OviedoMarcelo Sep 27, 2026
da6e874
Merge pull request #5 from OviedoMarcelo/feature/founder-experience-b…
OviedoMarcelo Sep 27, 2026
e764127
Add slide notices: server messages that scroll across the top of the …
diegoamatte Sep 27, 2026
ff6fd51
Merge pull request #6 from OviedoMarcelo/feature/slide-notice
diegoamatte Sep 27, 2026
e82af49
feat: Send the level of the monsters to the client after the login
diegoamatte Sep 27, 2026
221448a
Merge pull request #7 from OviedoMarcelo/feature/monster-levels
diegoamatte Sep 27, 2026
55006d4
Merge remote-tracking branch 'upstream/master' into test/upstream-syn…
diegoamatte Sep 27, 2026
d2514b4
Remove the GitHub Actions workflows
diegoamatte Sep 27, 2026
95b74f4
Merge pull request #8 from OviedoMarcelo/test/upstream-sync-2026-09-27
diegoamatte Sep 27, 2026
95e85b0
Add Server Announcements plugin: a configurable rotation of automatic…
OviedoMarcelo Sep 28, 2026
cab6f16
Install tzdata in the Docker image so IANA server time zones resolve
diegoamatte Sep 28, 2026
8c0b5a5
Merge pull request #9 from OviedoMarcelo/feature/server-announcements
OviedoMarcelo Sep 28, 2026
c6c98c8
Merge pull request #10 from OviedoMarcelo/fix/docker-tzdata
diegoamatte Sep 28, 2026
e4b73c7
Fix: guilds could never be disbanded or have a member kicked (securit…
OviedoMarcelo Sep 28, 2026
a5e7c07
Merge pull request #11 from OviedoMarcelo/fix/guild-disband-security-…
OviedoMarcelo Sep 28, 2026
169ae6b
Fix: Messages field missing from Server Announcements plugin config
OviedoMarcelo Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 0 additions & 41 deletions .github/workflows/claude.yml

This file was deleted.

58 changes: 0 additions & 58 deletions .github/workflows/discord-merge-notification.yml

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/docs-website.yml

This file was deleted.

17 changes: 0 additions & 17 deletions .github/workflows/dotnetcore.yml

This file was deleted.

40 changes: 0 additions & 40 deletions .github/workflows/publish.yml

This file was deleted.

30 changes: 30 additions & 0 deletions docs/Packets/C2-F5-02-WeeklyQuestEntry_by-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# C2 F5 02 - WeeklyQuestEntry (by server)

## Is sent when

After the client requested the list of available chat commands, one message is sent for each active weekly quest. When the progress of a quest changes, a single message is sent as update of this quest.

## Causes the following actions on the client side

The client shows the weekly quests and their progress in a window.

## Structure

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | 0xC2 | [Packet type](PacketTypes.md) |
| 1 | 2 | Short | 520 | Packet header - length of the packet |
| 3 | 1 | Byte | 0xF5 | Packet header - packet type identifier |
| 4 | 1 | Byte | 0x02 | Packet header - sub packet type identifier |
| 5 | 1 | Byte | | Index; The index of this quest within the list, starting at 0. The first message of a list replaces the previously known quests. |
| 6 | 1 | Byte | | Count; The total number of quests. A list without quests is sent as a single message with a count of 0. |
| 7 | 1 | Boolean | | IsUpdate; If true, this message updates the already known quest with the same id, instead of being part of a list. |
| 8 | 1 | Boolean | | IsCompleted; The objective of the quest has been reached. |
| 9 | 1 | Boolean | | IsRewarded; The rewards of the quest have been handed out. If the quest is completed but not rewarded, the reward is pending, e.g. because the inventory was full. |
| 12 | 4 | IntegerLittleEndian | | CurrentCount |
| 16 | 4 | IntegerLittleEndian | | RequiredCount |
| 20 | 4 | IntegerLittleEndian | | SecondsUntilReset; The seconds until the weekly progress is reset. |
| 24 | 64 | String | | Id; The identifier of the quest. |
| 88 | 48 | String | | Name |
| 136 | 256 | String | | Description |
| 392 | 128 | String | | Rewards; The rewards of the quest as text, in the language of the player. |
39 changes: 39 additions & 0 deletions docs/Packets/C2-F5-03-QuestDetails_by-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# C2 F5 03 - QuestDetails (by server)

## Is sent when

Right after each WeeklyQuestEntry message, with the same quest id. Clients which don't know it can ignore it and just show the WeeklyQuestEntry.

## Causes the following actions on the client side

The client shows the quest under the tab of its category, with a checklist of its objectives (steps).

## Structure

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | 0xC2 | [Packet type](PacketTypes.md) |
| 1 | 2 | Short | | Packet header - length of the packet |
| 3 | 1 | Byte | 0xF5 | Packet header - packet type identifier |
| 4 | 1 | Byte | 0x03 | Packet header - sub packet type identifier |
| 5 | 1 | Byte | | Category; The category of the quest: 0 = weekly, 1 = daily, 2 = main story, 3 = class, 4 = zone. |
| 6 | 1 | Byte | | Period; When the progress starts over: 0 = weekly, 1 = daily, 2 = never (the quest is done once). |
| 7 | 1 | Byte | | CurrentStep; The index of the first objective which isn't done yet. It's the number of objectives when all are done. |
| 8 | 1 | Byte | | ObjectiveCount |
| 9 | 1 | Boolean | | IsSequential; If true, the objectives have to be done in their order. |
| 12 | 4 | IntegerLittleEndian | | SecondsUntilReset; The seconds until the progress of this quest starts over. 0 for quests which are done once. |
| 16 | 64 | String | | Id; The identifier of the quest, as in the WeeklyQuestEntry message. |
| 80 | QuestObjective.Length * ObjectiveCount | Array of QuestObjective | | Objectives; The objectives of the quest, in their order. |

### QuestObjective Structure

An objective (step) of a quest.

Length: 76 Bytes

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 4 | IntegerLittleEndian | | CurrentCount |
| 4 | 4 | IntegerLittleEndian | | RequiredCount |
| 8 | 1 | Boolean | | IsDone |
| 12 | 64 | String | | Text; The text of the objective, in the language of the player, e.g. 'Kill 50 Skeletons'. |
37 changes: 37 additions & 0 deletions docs/Packets/C2-F5-04-SkillRequirements_by-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# C2 F5 04 - SkillRequirements (by server)

## Is sent when

Once after a successful login, before the character selection.

## Causes the following actions on the client side

The client uses these requirements and costs for the rest of the session, instead of the ones of its own data files, so that it shows and checks exactly what the server checks.

## Structure

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | 0xC2 | [Packet type](PacketTypes.md) |
| 1 | 2 | Short | | Packet header - length of the packet |
| 3 | 1 | Byte | 0xF5 | Packet header - packet type identifier |
| 4 | 1 | Byte | 0x04 | Packet header - sub packet type identifier |
| 6 | 2 | ShortLittleEndian | | SkillCount |
| 8 | SkillRequirement.Length * SkillCount | Array of SkillRequirement | | Skills; The requirements of every skill of the game configuration. |

### SkillRequirement Structure

The requirements and costs of a skill, as the server checks them. A value of 0 means there is no such requirement.

Length: 16 Bytes

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 2 | ShortLittleEndian | | SkillNumber |
| 2 | 2 | ShortLittleEndian | | Level; The required character level. |
| 4 | 2 | ShortLittleEndian | | Energy; The required total energy. |
| 6 | 2 | ShortLittleEndian | | Leadership; The required total leadership (command). |
| 8 | 2 | ShortLittleEndian | | Strength; The required total strength. |
| 10 | 2 | ShortLittleEndian | | Agility; The required total agility. |
| 12 | 2 | ShortLittleEndian | | Mana; The mana which is consumed by using the skill. |
| 14 | 2 | ShortLittleEndian | | AbilityGauge; The ability (AG) which is consumed by using the skill. |
38 changes: 38 additions & 0 deletions docs/Packets/C2-F5-05-LearnableItemRequirements_by-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# C2 F5 05 - LearnableItemRequirements (by server)

## Is sent when

Once after a successful login, right after the SkillRequirements message.

## Causes the following actions on the client side

The client shows these requirements for the items which teach a skill (orbs, scrolls, parchments, crystals), instead of the ones it calculates from its own data files.

## Structure

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | 0xC2 | [Packet type](PacketTypes.md) |
| 1 | 2 | Short | | Packet header - length of the packet |
| 3 | 1 | Byte | 0xF5 | Packet header - packet type identifier |
| 4 | 1 | Byte | 0x05 | Packet header - sub packet type identifier |
| 6 | 2 | ShortLittleEndian | | ItemCount |
| 8 | LearnableItemRequirement.Length * ItemCount | Array of LearnableItemRequirement | | Items; The requirements to learn the skill of each item. |

### LearnableItemRequirement Structure

The requirements to learn a skill with an item: the highest of the requirements of the item and the requirements of the skill. A value of 0 means there is no such requirement.

Length: 16 Bytes

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | | Group |
| 1 | 1 | Byte | | ItemLevel; The item level these requirements are for, or 0xFF if they apply to every level. Items which teach a different skill per level (Orb of Summoning) have one entry per level. |
| 2 | 2 | ShortLittleEndian | | Number |
| 4 | 2 | ShortLittleEndian | | Level; The required character level. |
| 6 | 2 | ShortLittleEndian | | Energy; The required total energy. |
| 8 | 2 | ShortLittleEndian | | Leadership; The required total leadership (command). |
| 10 | 2 | ShortLittleEndian | | Strength; The required total strength. |
| 12 | 2 | ShortLittleEndian | | Agility; The required total agility. |
| 14 | 2 | ShortLittleEndian | | SkillNumber; The skill which is learned with the item. |
31 changes: 31 additions & 0 deletions docs/Packets/C2-F5-06-MonsterLevels_by-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# C2 F5 06 - MonsterLevels (by server)

## Is sent when

Once after a successful login, right after the LearnableItemRequirements message.

## Causes the following actions on the client side

The client shows the level of the monsters next to their name and health bar.

## Structure

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 1 | Byte | 0xC2 | [Packet type](PacketTypes.md) |
| 1 | 2 | Short | | Packet header - length of the packet |
| 3 | 1 | Byte | 0xF5 | Packet header - packet type identifier |
| 4 | 1 | Byte | 0x06 | Packet header - sub packet type identifier |
| 6 | 2 | ShortLittleEndian | | MonsterCount |
| 8 | MonsterLevel.Length * MonsterCount | Array of MonsterLevel | | Monsters; The level of each monster which has one. |

### MonsterLevel Structure

The level of a monster.

Length: 4 Bytes

| Index | Length | Data Type | Value | Description |
|-------|--------|-----------|-------|-------------|
| 0 | 2 | ShortLittleEndian | | MonsterNumber; The number of the monster, as in the AddMonstersToScope message. |
| 2 | 2 | ShortLittleEndian | | Level |
5 changes: 5 additions & 0 deletions docs/Packets/ServerToClient.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,11 @@
* [C1 F3 52 - MasterSkillLevelUpdate (by server)](C1-F3-52-MasterSkillLevelUpdate_by-server.md)
* [C2 F3 53 - MasterSkillList (by server)](C2-F3-53-MasterSkillList_by-server.md)
* [C2 F5 01 - AvailableChatCommand (by server)](C2-F5-01-AvailableChatCommand_by-server.md)
* [C2 F5 02 - WeeklyQuestEntry (by server)](C2-F5-02-WeeklyQuestEntry_by-server.md)
* [C2 F5 03 - QuestDetails (by server)](C2-F5-03-QuestDetails_by-server.md)
* [C2 F5 04 - SkillRequirements (by server)](C2-F5-04-SkillRequirements_by-server.md)
* [C2 F5 05 - LearnableItemRequirements (by server)](C2-F5-05-LearnableItemRequirements_by-server.md)
* [C2 F5 06 - MonsterLevels (by server)](C2-F5-06-MonsterLevels_by-server.md)
* [C1 F6 03 - QuestEventResponse (by server)](C1-F6-03-QuestEventResponse_by-server.md)
* [C1 F6 0A - AvailableQuests (by server)](C1-F6-0A-AvailableQuests_by-server.md)
* [C1 F6 0B - QuestStepInfo (by server)](C1-F6-0B-QuestStepInfo_by-server.md)
Expand Down
Loading