Open
Conversation
…at project New modules: - ClientAnalysis: memory R/W, singleton resolution, field access, process handle, remote function calling (x86 shellcode), login step monitoring, native types (ZArray<T>, ZXString), runtime function chain dumper (Iced x86 disassembly) - V95ClientStructs: addresses, offsets, singletons, field registry for CLogin, CWvsContext, CWvsApp, CUIWorldSelect, CUIChannelSelect, CQuestMan, WorldItem, ChannelItem - Diagnostics: crash analyzer, login diagnostics/timeline, memory snapshots, hex formatter - Login/WorldSelect: strategy pattern (direct function call vs manual memory write) - New plugs: diagnostics plug for packet inspection Changes to existing code: - Autologin plugs rewritten to use ClientAnalysis module for robust world/channel selection and character auto-select - Auto-register plug enhanced with client memory integration - Added Iced and System.IO.Hashing package references - Config expanded with client memory and binding settings - Formatting/style cleanup across Commands, Configs, Plugs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Summary: Implement Rate Modifier System
Overview
This PR introduces a composable rate system for EXP, Meso, and Drop rates. It supports multiple modifier sources—such as base configurations, active buffs, and guild bonuses—enabling a modular, extensible, and transparent approach to gameplay reward calculation.
Architecture Flow
IRateModifierSource
Independent providers of rate changes (e.g., config, buffs, guild skills).
IRateModifierManager
Aggregates all active modifier sources and calculates the final multiplier.
Final Rate
Applied directly to gameplay rewards (mobs, quests, NPC rewards, etc.).
New Files
Protocol Layer
src/protocol/Edelstein.Protocol.Gameplay.Game/Rates/RateType.cs
Enum defining supported rate types:
IRateModifier.cs
Interface defining:
IRateModifierSource.cs
Interface for providers of rate modifiers.
IRateModifierManager.cs
Aggregates active modifiers and calculates the final rate.
IRateContext.cs
Context for rate calculations (e.g., specific user, field, or options).
Implementation Layer
src/common/Edelstein.Common.Gameplay.Game/Rates/RateModifier.cs
Standard modifier implementation, including an
Apply()helper.RateModifierManager.cs
Core logic to multiply all active modifiers and produce the final rate.
RateContext.cs
Record-based implementation of
IRateContext.StageOptionsRateModifierSource.cs
Provides base rates from configuration files.
TemporaryStatRateModifierSource.cs
Handles buff-based rates (e.g., Holy Symbol, EXP coupons).
GuildRateModifierSource.cs
Applies bonuses derived from guild skills.
Commands
src/plugin/Edelstein.Plugin.Rue/Commands/Admin/RateCommand.cs
Adds the
/rateadmin command to:Modified Files
Configuration & Dependency Injection
ProgramConfigStageGame.cs / IGameStageOptions.cs
Added:
ExpRateMesoRateDropRateappsettings.json
Added default rate configuration values.
ProgramHost.cs
Registered:
IRateModifierManagerRate Integration (Logic Hooks)
GameContextManagers.cs
Exposed
IRateModifierManagerviaRates.MobRewardPoolManager.cs
Applies drop rate multipliers to reward probabilities.
FieldDropMoney.cs
Applies the meso rate during currency pickup.
FieldMob.cs
Calculates and grants EXP using the modified rate on mob death.
QuestManager.cs
Integrates rate modifiers into quest completion rewards.
ConversationSpeakerUser.cs
Applies rates to rewards triggered via NPC conversations.
Plugin Registration
Registers the new
RateCommand. For debugging purposes display all active rate modifiers and total.Beyond rate system
Fixed rue plugin not outputting the Trie .dll causing exception on load, this is important because current configuration presupposes the existence of plugin if "plugins" (from appsettings.json) is removed the launch hangs without error.
Add temp file Serilog sink
Things which have not been taken into consideration: