Commit graph

164 commits

Author SHA1 Message Date
nolt
9469861aeb bots: accept party invitations regardless of level gap
The reset-aware level gate in BotPartyHandler rejected nearly every party
invitation on servers with resets, because it folded reset count into the level
scale (one reset ~= 400 points against a 500 cap). A veteran player inviting a
freshly generated bot was always over the limit, so the invitation was silently
declined. Remove the gate so a bot accepts any inviter who is alive and in the
world, matching OpenMU's own party action; the situational safeguards (shopping,
revenge, mini game, pending invite, human companion) stay in place.
2026-07-28 16:45:49 +02:00
bulgarashi
49f1302dd3 Mark the Golden Archer packet handlers as done
The event chip registration (0x95) and dialog close (0x97) requests are
handled since the Golden Archer item registration feature was merged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 18:55:51 +02:00
Lalyo Boyadzhiev
7d7dc9eef0 Revert unintended EventChip->GoldenArcher packet rename and formatting churn
The generic EventChipRegistrationRequest/EventChipExitDialog/EventChip
RegistrationResult packets predate this feature and are reused by other
NPCs; renaming them to GoldenArcher* broke the public packet API and
docs filenames for no benefit. Also reverts unrelated BOM removal,
blank-line and escaping churn (GameConfiguration.cs, Character.cs,
Directory.Packages.props, Startup.csproj) and ~3900 lines of
trailing-whitespace-only diff noise in ServerToClientPacketTests.cs,
keeping only the one genuinely new test for EventChipRegistrationResult.
2026-07-26 16:48:33 +02:00
Lalyo Boyadzhiev
9a131acaac Add Golden Archer item registration feature
Squashed from the feature/golden-archer branch history (62 iterative
commits) into a single commit for reviewability. Adds a generic
item-registration engine (IItemRegistrationStrategy + feature plug-in +
NPC-configurable rules) with a concrete Golden Archer / Rena strategy,
the EventChip* packets it uses, and supporting EF migrations.
2026-07-26 16:47:41 +02:00
sven-n
709ac8b564 Updated generated files 2026-07-26 09:42:54 +02:00
nolt
bf8d80b38c Document how a bot chooses a map, and what it may cast
The behaviour notes were describing a bot which took the strongest map it
could survive, travelled for free, and fought with whatever it had
learned. All three have changed on this branch: the map is drawn among
the ones worth going to, the trip is paid for like a player's, and a
skill the character cannot currently cast - a pet's without the pet, or
one a reset left it holding above its level - is passed over.
2026-07-22 21:33:49 +02:00
nolt
1126656d99 Let the admin panel switch the bots off and delete them
Three settings which read as if they controlled the bot population did
not do what they say:

Unchecking "Enabled" did nothing until the next restart - the bots kept
hunting. It now stops them within a tick, without deleting anything, so
checking it again brings the same characters back.

"Reset bots" was skipped whenever the number of accounts was zero: the
server which carries out the reset was picked as the owner of the FIRST
account, and with no accounts configured there was none - so the one
setting which says "I want no bots" disabled the code which removes
them. The role now follows from the set of game servers alone.

Deleting the bots for good was not possible at all: a reset regenerates
the population, and every gate sat behind "Enabled". The new "Purge
bots" deletes every bot account and switches the feature off - which is
what makes it a purge, since the same pass would otherwise generate the
population again right after deleting it. It works with the feature
enabled or disabled, and whatever number of accounts is configured.

A flag which is set but cannot be acted upon is logged now instead of
being ignored silently. That silence was why a purge which never ran
looked like one which had nothing to delete.
2026-07-22 15:20:37 +02:00
nolt
f831e191fb Document the merchant trip and the two new settings
The bots documentation lists every setting of the feature plugin and describes
what a bot does with its money, so it has to follow: the two stock settings are
added, and the merchant section now says what actually happens - what makes the
bot go, how it picks the merchant, that it repairs there, that it only collects
the three jewels it can spend, and what it does at the money limit.
2026-07-22 12:38:13 +02:00
sven-n
b10de0645a
Merge pull request #820 from nolt/feature-bots 2026-07-16 22:01:57 +02:00
nolt
a81258b2f4 Fix the markdown of the mastered-bot hunting paragraph
A wrapped line started with a hyphen, which markdownlint reads as a list item
without the surrounding blank lines.
2026-07-14 19:30:19 +02:00
nolt
48869d6c4c Hunt the monsters which pay a mastered bot
A master class at the maximum level only earns master experience from monsters
of at least MinimumMonsterLevelForMasterExperience, and no regular experience at
all - so below that line a kill pays it nothing. Bots kept hunting the strongest
monsters they considered safe, which are weaker than that line, and never gained
a single point of master experience.

Mastered bots now pick their map and hunting ground among the monsters which pay
them, and take the weakest ones above the line: master experience hardly grows
with the monster's level, so the cheapest kill above it is the best one. Those
monsters carry 40.000+ health, out of reach of the regular hit budget for a bot
in the gear it collects from drops, so the budget is stretched for them - a long
fight it survives beats a quick one worth nothing. Survivability is not
stretched: a monster whose hits it cannot take is still refused.
2026-07-14 19:16:38 +02:00
nolt
98e0b5951f Document the bot feature
How it works, what the bots do, what they were validated with, the known
limitations, and how to enable them on a server.
2026-07-14 15:01:42 +02:00
Rhefew
de6d0aa8c3 fix: correct QuestProgressExtended packet type from C1 to C2
The QuestProgressExtended packet (F6 0C) has a declared length of 272 bytes.
A C1 packet header only supports a 1-byte length field (max 255 bytes), so
the correct header type is C2, which uses a 2-byte length field.

- Rename C1-F6-0C-QuestProgressExtended_by-server.md to C2-F6-0C-...
- Fix the packet type byte (0xC1 -> 0xC2) and length field width (1 -> 2 bytes)
- Fix field offsets: C2 header is 4 bytes (not 3), shifting all fields by 1
- Update the link in ServerToClient.md
2026-07-12 06:50:04 +02:00
sven-n
b2627efffc Auto generated packet code 2026-05-19 22:10:27 +02:00
sven-n
ae4b929ad6 fixed grammar 2026-04-27 21:15:32 +02:00
sven-n
afd96970ce Added missing enum value for merchant npcs and it's logic 2026-04-27 20:27:17 +02:00
Eduardo
ed3cbc83fc Merge branch 'master' into feature/offlevel-party 2026-04-03 20:26:29 -03:00
sven-n
411722f0e2 Alliance packets and join/leave logics corrected 2026-03-29 21:44:29 +02:00
sven-n
0c6e3227c3 Corrected network messages 2026-03-25 23:00:56 +01:00
sven-n
2e090680ba Added assistant guild master enum value 2026-03-25 21:25:31 +01:00
sven-n
44bab6a204 Fixed build 2026-03-25 21:20:53 +01:00
Eduardo
353308d7f5 fix: incorrect packet size causing test failure 2026-03-17 00:20:10 -03:00
copilot-swe-agent[bot]
6c689cada1 Add documentation for packet structure tests implementation
Co-authored-by: sven-n <5238610+sven-n@users.noreply.github.com>
2025-07-07 19:46:35 +00:00
sven-n
a036002ecb Fixed DuelStartResponse packet length 2025-06-25 21:35:57 +02:00
sven-n
be2c5a78e2 Implemented loss of experience after player death 2025-05-18 14:32:50 +02:00
DavidTs93
dab82abca8
Add packet handling for base stat setting 2025-03-13 23:36:38 +02:00
sven-n
8c1a52dc1a Added extended message for mails
The old structure doesn't have enough space for the larger appearance data. I made it even larger than needed for future extensions.
2025-01-20 17:48:35 +01:00
sven-n
268360ac61 Fixed field indexes in PlayerShopBuyResult 2025-01-02 20:54:01 +01:00
sven-n
0039043a33 Fixed money drops in extended protocol 2024-12-23 17:15:59 +01:00
sven-n
164bdb7733 Fixed length of GuildInfoRequest; Version 0.9.3 2024-12-06 21:13:36 +01:00
sven-n
eab38f3a41 Fixed party request response length
These files were forgotten to be committed previously when the XML was adapted.
2024-11-22 21:14:37 +01:00
Benito Go III
01150d0747 Extend walk packets with source x,y 2024-11-23 03:08:36 +08:00
sven-n
4761521711 fixed endianness of effect time 2024-10-18 20:27:51 +02:00
sven-n
7fb2294d9f Refactored stats updates and consolidated extended messages 2024-10-17 21:47:44 +02:00
sven-n
f7045083d5 Some adjustments and extensions for the network protocol 2024-10-05 17:30:07 +02:00
sven-n
5dae0876ce Implemented extended item serializer 2024-09-28 16:58:08 +02:00
sven-n
9a85e7fc69 Added extended appearance serializer 2024-09-28 16:39:49 +02:00
sven-n
63c06b9ccc Added attack speed to character stats packet 2024-09-26 21:11:50 +02:00
sven-n
c4770eb081 fixed build 2024-09-24 20:02:16 +02:00
sven-n
50489a9f79 Extended protocol to solve some limitations
Now we can transmit values of Health, Shield, Mana, AG, Damage, Experience above 65k. I widened all to 32 bit.
Additionally, I added a message to add more than one statpoint at a time.

These changes will be added to my MuMain sources soon as well.
2024-09-24 19:51:47 +02:00
bernat
4f9c6f43eb change code from ServerToClientPackets.xml and other refs 2024-08-26 11:25:00 +02:00
sven-n
6a6a176b01 Fixed field index of skill level 2024-07-19 18:12:34 +02:00
sven-n
f27f82a724 Implemented Chain Lightning Skill for Summoner class 2024-07-15 20:12:11 +02:00
sven-n
bfa6183fb3 Fixed some packet definitions and view plugins 2024-07-10 20:53:58 +02:00
sven-n
24e99a3e51 Added missing packet definitions for duels 2024-07-07 09:52:45 +02:00
sven-n
796d3ec57a
Fixed broken link (see #399) 2024-01-10 20:53:47 +01:00
sven-n
6c874bfa62 Changed chat message type to Binary instead of unreadable string 2023-10-09 21:08:52 +02:00
sven-n
26f6919f3e Changed chat server auth token to Binary instead of unreadable string 2023-10-09 20:00:11 +02:00
sven-n
aeb248c8c8 Fixed/added some packets 2023-10-07 15:41:15 +02:00
sven-n
1747b60bd8 Added missing packet definitions C->S 2023-09-23 18:17:32 +02:00