Server Code Changes:
PR #951: chore(scripts): harden VB case/CRLF normalization
Description: Similar to the client PR, this change focuses on the server repository to standardize the Visual Basic source code. The goal is to normalize case differences and line breaks (CRLF) so that Git doesn't interpret them as actual code changes, which makes the version history cleaner. (ReyarB)
PR #959: Default home to Forgat when creating a character
Description: This PR modifies the character creation logic to make Forgat the default home. This avoids the town selection screen and places new players in a safe, spacious area. (Plusin)
PR #958: Prevent fishing in dungeon areas
Description: This PR implements a new rule that prohibits fishing in map areas classified as "DUNGEON." (ReyarB)
PR #953: Fix protocol bug
Description: This PR fixes a protocol bug that was causing "subscript out of range" errors. Key Changes: The PrepareShowMessageBox function was modified to accept a new MessageId parameter, and all calls to this function were updated to pass this new value (with a value of 0). Additionally, an inconsistent case in a variable name (charindexstr to charIndexStr) was fixed. (BriaNirvana)
PR #969: Fix: Missing sound on equip
Description: This is a hotfix that addresses an issue where the sound associated with equipping an item was not playing. Although the equipping process worked correctly, the audio feedback to confirm the action was missing. Key Changes: Adjusted the server-side logic to send the audio cue (SOUNDID.SFX_EQUIP) to the client each time an item is successfully equipped, restoring the expected audio experience. (ReyarB)
PR #954: Improve: Reduce unnecessary calculations
Description: This PR focuses on optimizing server performance by reducing the amount of redundant calculations performed when validating a character's movement limits. These optimizations are crucial to improving the overall efficiency of the backend. (BriaNirvana)
PR #952: Feature_HealersAndTanks
Description: "Divine Blood" Transformation (Cleric) A new transformation for clerics called Divine Blood has been added. While the transformation is active, the cleric gains healing and resurrection benefits (and restrictions on which spells they can cast). Implemented graphical/particle effects and sound effects associated with the transformation. Warrior Life Steal: A new mechanism allows warriors to regain life when attacking NPCs; the percentage/multiplier is configurable. Armor Speed: A velocity property has been added for armor (defaults to 1 if not set) and handlers to update the wearer's speed based on gear. This allows certain armor to modify movement/speed. Configuration Variables (balance.ini): Three variables have been added that must be set/adjusted in the [Extra] section of balance.ini: *DivineBloodHealingMultiplierBonus *DivineBloodManaCostMultiplier *WarriorLifeStealOnHitMultiplier (these variables control the Divine Blood healing bonus, the mana cost multiplier for transformed cleric spells, and the warrior's lifesteal multiplier, respectively).
Feature Toggle: A feature toggle called healers_and_tanks has been added. In Example.feature_toggle.ini in this PR, it appears as name=healers_and_tanks and value=1 (example: enabled by default in the example). If you prefer not to enable the feature on your server, set value=0 in your feature_toggle.ini.
Miscellaneous Fixes and Changes:
Fix: Bug that prevented Stone Bullets from being crafted in blacksmithing has been fixed. Internal renames for clarity (e.g., tU and tmpChar → TargetUserIndex in modHechizos.bas). Added entries to enums: e_SoundEffects, e_GraphicalEffects, and e_ParticleEffects to include new WAVs/animations/particles. (Centorios)
PR #974: Indentation refactoring and removal of unnecessary linenode to improve readability and code consistency.
Description: Code optimization (Centorios)
PR #975: Removed redundant code in AlquimistaConstruirItem
Description: A duplicate was detected in recipe validation that was already covered by the KnowsCraftingRecipe function (Aledg994)
PR #978: Fixes world time calculation in PrepareMessageHora
Description: This fix was made to prevent negative values after resetting the Windows tick counter. (Morgolock)
PR #979: Refactoring of world time calculation
Description: Tick-overflow-safe functions were implemented, preventing desynchronization after long uptimes. (Morgolock)
PR #980: Migrate StunEndTime logic to tick-overflow-safe functions
Description: These changes improve the code, avoiding broken stuns (infinite or ignored) on servers with high uptime. (Morgolock)
Commit 6f98e4a: Added documentation for the changes in the previous two PRs.
Description: Documentation and an AddMod32 helper in modElapsedTime to migrate code to time-safe patterns, with before/after examples to avoid tick-overflow bugs. (Morgolock)
Client Code Changes:
PR #596: chore(scripts): harden VB case/CRLF normalization
Description: This PR focuses on improving source code normalization in Visual Basic (VB) to avoid "cosmetic diffs" in Git. These diffs, which do not represent actual code changes, are often caused by differences in case or line breaks (CRLF). Key Changes: Added a script that performs a case-insensitive, carriage return-tolerant diff, applying only genuine content changes and forcing CRLF line breaks in the modified file. This ensures a cleaner and more predictable version history. (ReyarB)
PR #595: Add animated NPC preview in Map Viewer
Description: This PR implements new functionality in Map Viewer that allows animated NPC previews. The animation is automatic and cyclical, showing the different directions of the NPC. Key Changes: Added a timer to animate NPCs and a function to clear the preview when no NPC is selected. (ReyarB)
PR #609: Optimized background for NPC animation in the Info panel
Description: This PR is a minor change to adjust the background color of the NPC info panel in the Map Viewer. Key Changes: The change consisted of a single commit that modifies the background color for NPC animations, likely to improve visibility. (ReyarB)
PR #608: Update URL and legal trademarks on .exe
Description: This PR updates the URL and trademark information within the properties of the game client's .exe file. Key Changes: The URL and game name information have been updated. There was some discussion about the use of the copyright symbol ©, but it was ultimately included. (BriaNirvana)
PR #606: Fix load config to avoid error on loading
Description: This PR fixes a minor error that occurred during the game configuration loading process. Key Changes: This fix aims to eliminate a "noisy" error that occasionally appeared when loading the configuration, improving client stability. (BriaNirvana)
PR #607: Fix Steam API error when debugging sometimes
Description: This PR fixes a Steam API-related error that sometimes appeared during code debugging. Key Changes: Changes were implemented to fix the intermittent Steam API error, which likely involved adjustments to how the client interacts with the API. (BriaNirvana)
PR #598: Feature_healersAndTanks
Description: Adds exceptions for rendering dwarven armor and fixes a bug with "idle" animations on backpacks for non-player characters. (Centorios)
PR #592: fix_HandleCharacterChangeGrhIndexError
Description: Fixes an error when changing GrhIndex = 0 in SyncGrhPhase that caused invalid calculations. (Centorios)
PR #614: refactor_IdentationAndDeleteLineno
Description: Improves indentation and removes unnecessary lines (line numbers) in several files. (Centorios)
PR #616: Adjust width in quest progress column
Description: Fixes text clipping in the quest window when displaying progress (e.g., "90/200"), making the corresponding column larger. (Aledg994)
PR #618: Removed /NIGHT/DAY/TIME
Description: Removes references to /NIGHT/DAY/TIME on the client, cleaning up redundant code. (Morgolock)
PR #615: NPC Head Offset Fix
Description: Adjusts the head's Y offset so it aligns correctly over the body in NPC posters (previously it was drawn too low) (Plusin)
PR #619 DXUI: TexturedQuads and RenderText
Description: Introduces basic text rendering and TexturedQuads in the DXUI module. (Morgolock)
PR #621 Refactor: Use WorldTime API for in-game clock and lighting
Description: Refactors the client to use the WorldTime API for the in-game clock and lighting. (Morgolock)
Resource Changes:
Balance
Worker Bow Hit: 0.85 (0.90 >> 0.85)
Worker Missile Damage: 0.85 (0.90 >> 0.85)
Worker Weapon Damage: 0.85 (0.80 >> 0.85)
Warrior Missile Damage: 0.85 (0.87 >> 0.85)
NPCs:
The +1 Arrow is available for purchase from the Halving NPC <Carpentry>.
The +2 Arrow is available for purchase from the Galving NPC <Carpentry>.
Carpentry:
The Common Arrow is no longer craftable and can only be purchased from NPCs.
The +3 Arrow and the +3 Arrow Quiver have been added to the Carpentry system.
The Master Bow (Worker) has been added to the system.
Items:
The +1 Arrow: Can now be equipped at level 1, reducing its minimum damage to 1 (2 >> 1).
The +2 Arrow: Can now be equipped at level 20, is enabled for the Warrior and Worker classes, and reduces its damage to 2/3 (3/4 >> 2/3).
The +3 Arrow: Can be enabled through Carpentry and requires 2 Common Logs and 1 Elven Log to craft.
Elven Arrow: Reduced value to 15 (24 >> 15) and now requires 1 Common Log and 2 Elven Logs to craft.
Common Arrow Quiver: Reduced value to 825 (975 >> 825) and now requires 275 Logs to craft (325 >> 275)
Arrow Quiver +1: Reduced value to 990 (1260 >> 990) and now requires 330 Logs to craft (420 >> 330)
Arrow Quiver +2: Reduced value to 495 (675 >> 495) and now requires 165 Logs to craft (225 >> 165)
Arrow Quiver +3: Enhanced through Woodworking.
Cutlass: Increases its maximum damage to 10 (9 >> 10)
War Mace: Reduces its maximum damage to 15 (16 >> 15)
Master Bow: New bow for the Worker class (T3)
Alchemy:
New quest for NPC Caelum: Poison Potion Recipe.
The Triple Sprout Cove NPC has been added to Map 556 (Spirit Woods).
New Alchemy Potion: Available exclusively for the Assassin class.
Quest:
A quest has been added to the Abandoned City starting at level 35, which will grant access to a unique tunic/armor item.
Swamp Zone:
A bridge to access the Swamp Lair has been mapped (Training Map +18).
Changed depots in beta branch