-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Epitaph Road #619
feat: Epitaph Road #619
Conversation
2756a27
to
db4c6e4
Compare
ad2777a
to
6c85168
Compare
687996c
to
3f2e4af
Compare
314aabc
to
7071eaf
Compare
- Implemented many req, res, ntc and handlers for Epitaph content. - Renamed existing BonusDungeonManager to DungeonManager. - Implemented database migration from 24 -> 25. - Implemented a new packet handler which provides a queue which can be used to send packets after the response is returned. - Commented out RPC ping print message. - Added new NPC behavior to NpcGetExtendedFacilityHandler.
- Created personal quest required to enter Rathnite Foothills dungeon. - Created new EpitaphRoad.json file which contains dungeon information for each path. - Created new epitaph directory to hold all trials - Implemented all trials for Rathnite foothills. - Implemented section 1 and section 3 trials for Memory of Megadosys.
- Added docs which contain information found about buffs, objectives and rewards. - Started a new document guide.md which describes the epitaph assets.
- Added new enemies for the Rathnite Foothills dungeon. - Added some enemies to memory of megadosys.
7071eaf
to
ebd1277
Compare
@@ -59,6 +59,14 @@ public Character SelectCharacter(uint characterId, DbConnection? connectionIn = | |||
return null; | |||
} | |||
|
|||
character.EpitaphRoadState.UnlockedContent = _Server.Database.GetEpitaphRoadUnlocks(character.CharacterId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At some point we need to move a lot of this into a transaction and/or make this more modular. Fetching a character shouldn't involve a dozen DB opens and closes, and not every character fetch needs every detail.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what you mean by this. Every character needs the details populated. Old logic should be moved into the character manager instead of the way it was originally designed so we can move the transaction logic into these functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you attempt to check the profile of characters on other channels? I can't remember. If you can, you definitely need some of their details but you certainly don't need their Epitaph road state.
See also the current implementation in PawnRentRegisteredPawnHandler
, where we have to do a full fetch of the owner's details just to get their inventory.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function is called when you log in. It manages collecting and calculating stats from BO trees, pawns and all the other auxiliary information. It should only be called once (or maybe twice because we query twice at login for some reason).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see it got used in some of these pawn ones. Maybe we should make a lighter ones for those? Problem is pawns need the character inventory and all that other unpleasant stuff.
@@ -21,7 +21,7 @@ public RpcServer(DdonGameServer gameServer) | |||
public RpcCommandResult Execute(IRpcCommand command) | |||
{ | |||
RpcCommandResult result = command.Execute(_gameServer); | |||
Logger.Info(result.ToString()); | |||
// Logger.Info(result.ToString()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I continue to add RPC stuff, I do think we need to have logging for it. Maybe in a better form than it currently is, but it should be there in some form.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This log spams so often, it gets in the way of reading the logs when ddon-tools is connected. We should make some filter system for this so we only get logs we want.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not against removing this comment. It's true it gets spammy and i don't think we're getting much info out of it
6f60612
to
2aa0ce4
Compare
- Add cancel handler - Fix bug when party ready/unready logic - Add missing connectionIn to DB queries - Fix argument id in om command - Fix issue where repop NTC was only sent to the player who killed the enemy. - Changed certain OM update packets to only send to the client who requested. - Fix barrier purchase so it only unlocks for the person who bought.
2aa0ce4
to
423eb1e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These features are getting crazy complicated, good job on it.
I haven't focused too much on the packets, managers, and handlers as i trust that they work, the comments im giving are mostly nitpicks, places where i feel are missing comments or explaining where certain values come from, and suggestions that you can freely ignore if you wish.
CONSTRAINT "fk_ddon_epitaph_road_unlocks_character_id" FOREIGN KEY ("character_id") REFERENCES "ddon_character"("character_id") ON DELETE CASCADE | ||
); | ||
|
||
CREATE TABLE IF NOT EXISTS ddon_epitaph_claimed_weekly_rewards ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As an idea you could evaluate, rather than periodically cleaning up this table, you could store a timestamp and make sure there's no entry from the current week
// result as seen in player videos | ||
results.Add(new InstancedGatheringItem() | ||
{ | ||
ItemId = (gatheringPoint == null) ? 9393 : dungeonInfo.SoulItemId, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should these magic numbers be configurable? Or at least be named constants
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suppose this could be more robust than it currently is. Will add a TODO for now to make it more configurable.
Arrowgene.Ddon.GameServer/Chat/Command/Commands/UpdateOmCommand.cs
Outdated
Show resolved
Hide resolved
return 0; | ||
} | ||
|
||
private readonly List<(EpitaphBuffId BuffId, uint ItemId, uint Amount, double Chance)> gDropConfigs = new List<(EpitaphBuffId BuffId, uint ItemId, uint Amount, double Chance)>() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as before, should these be configurable? If they should but it's not done yet please leave a TODO. If they shouldn't be configurable a named constant or a comment explaining would be useful
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They could be configurable, will add a TODO. They are used for adding bonus items from the epitaph buffs.
Arrowgene.Ddon.GameServer/Handler/InstanceGetEnemySetListHandler.cs
Outdated
Show resolved
Hide resolved
Arrowgene.Ddon.Shared/Entity/PacketStructure/C2S_SEASON_DUNGEON_62_12_16_NTC.cs
Show resolved
Hide resolved
Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSeasonDungeonReceiveSoulOrdealRewardRes.cs
Show resolved
Hide resolved
Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSeasonDungeonSetOmStateNtc.cs
Show resolved
Hide resolved
Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CStageGetSpAreaChangeInfoRes.cs
Show resolved
Hide resolved
Arrowgene.Ddon.Shared/Entity/Structure/CDataSeasonDungeonBuffEffectReward.cs
Show resolved
Hide resolved
- Added missing object instantiations to packet consturctors. - Renamed packets which were not named correctly. - Added some TODO comments
Added support for Epitaph Road endgame content.
Rathnite Foothills".
sections and trials.
packets.
after the response is sent.
Checklist:
develop
branch