Skip to content

Releases: HerculesWS/Hercules

v2024.05

25 May 15:06
7312ec2
Compare
Choose a tag to compare

Changed

  • Implemented official ATK % calculation for BS_OVERTHRUST in pre-renewal. Party members only receive 5% ATK bonus. (#3293)

Fixed

  • Fixed a missing initialization of the (m)atk/(m)def modifiers, resulting into 0 or 1 damage. (#3293, related to #3290)
  • Fixed an incorrect call of clif->updatestatus() to non-player objects in relation to atk/def percent bonuses. (#3294, related to #3290)
  • Fixed a failure on SCs from skills that don't have a StatusChange entry in their skill db entries after a @reloadskilldb, such as the spirit skills. (#3296, issue #3295)
  • Fixed a compiler warning due to a missing case label when SECURE_NPCTIMEOUT is enabled. (#3297, issue #3197)

Other

  • Work on the rebalance patch is continuing on the rebalance branch.

v2024.05 (Rebalance edition)

25 May 15:35
6dfc58c
Compare
Choose a tag to compare
Pre-release

General changes

Rebalance changes

2-2 Classes

  • Rebalance of the 2-2 job skills, implementation based on kRO and kRO zero patch notes from 2018-10-31, iRO Wiki, rAthena and divine pride info, along with some in-game testing. (#3229, part of issue #2727)
Crusader
  • Rebalance of CR_GRANDCROSS (Grand Cross)
    • Fixed casting time changed: 1.5 s -> 0.5 s
    • Variable casting time changed: 1.5 s -> 1 s
    • Global delay changed: 1.5 s -> 0.5 s
    • 1 s cooldown added
    • Self damage is removed
  • Rebalance of CR_SHIELDBOOMERANG (Shield Boomerang)
    • Damage formula changed
      • Old: ATK (100 + 30 x SkillLevel)% (Shield weight gives extra flat damage)
      • Now: ATK (80 x SkillLevel + Shield Weight + Shield Upgrade x 4)%
  • Rebalance of CR_SPEARQUICKEN (Spear Quicken)
    • Additionally gives +10% of Equipment ASPD
Alchemist
  • Rebalance of AM_DEMONSTRATION (Bomb)
    • Chance of breaking target weapon increased
      • Old: SkillLevel %
      • New: (3 x SkillLevel)%
    • It now uses basic/default melee damage calculation (instead of special formula)
    • Damage formula changed:
      • Old: [100% + (Skill Level x 20)]% (ATK + MATK)
      • New: [(Skill Level x 60) + (Potion_Research_Lv x 10)]% ATK
    • Note: the skill code was refactored to move the chance to break the enemy weapon to the SkillData2 field of the skill DB (affecting both renewal and pre-renewal)
  • Rebalance of AM_ACIDTERROR (Acid Terror)
    • Chance of breaking target armor increased
      • Old: 3 / 7 / 10 / 12 / 13 %
      • New: 5 / 15 / 25 / 35 / 45 %
    • It now uses basic/default ranged physical damage calculation (instead of special formula)
    • Damage formula changed:
      • Old: [200% + (Skill Level x 80)]% (ATK + MATK)
      • New: [(Skill Level x 200) + (Potion_Research_Lv x 100)]% ATK
    • The damage effect has been corrected (renewal only) and it is now applied in a bundle of 5 hits instead of a single damage
Rogue
  • Rebalance of RG_RAID (Sightless Mind)
    • SP cost reduced: 20 -> 15
    • Damage increased
      • Old: [100 + (Skill Level x 40)]%
      • New: [50 + (Skill Level x 150)]%
    • Damage debuff changed
      • Old: 20% more damage for 5 seconds or 7 hits
      • New: 30% more damage (15% on boss monsters) for 10 seconds
  • Rebalance of RG_BACKSTAP (Back Stab)
    • Skill mechanics changed
      • No longer needs to be behind the target to use skill
      • No longer ignores accuracy check
      • No longer usable from Hiding state
      • Now increases skill Hit by 4 per skill level
      • Number of hits changed:
        • Old: 1 hit
        • New: 2 hits with Dagger, 1 hit with other weapons
    • SP cost reduced: 16 -> 12
    • Cooldown added: 0.5 s
    • Number of hits changed
    • The bow damage formula has been corrected (affecting both renewal and pre-renewal). Incorrectly, only part of the skillratio value was getting halved when using bows, disregarding the base 100% value.
  • Rebalance of RG_PLAGIARISM (Intimidate)
    • Also increases Attack Speed by 1% per Skill Level

v2024.04

01 May 18:57
a2d8e27
Compare
Choose a tag to compare

Added

  • Implemented skill->get_index_sub(), allowing to prevent error reports on the console when a skill is not found, for testing whether a skill exists in places where its absence is not an error. (#3292)
  • Implemented (m)atk/(m)def percent system: (#3290)
    • Implemented percent atk/def/matk/mdef bonus calculation, matching the official behavior
    • Added the AtkPerc, DefPerc, MatkPerc, MdefPerc calc flags to sc_config.conf to trigger recalculation of the respective stats
    • Added atk percent bonus to the client's status window like on official servers (note: the matk percent bonus is not displayed)
    • Added def percent bonus to the client's status window (included in the soft def)
    • Implemented official behavior for skills/status changes that officially rely on this system (detailed below)
  • Added the script command getitemgroupitems() to obtain a list (without duplicates) of all items contained in a given item group (#3275)
  • Added support for the ZC_SOULENERGY packet for displaying soul balls, split from ZC_SPIRITS for new clients (#3291)

Changed

  • Converted handling of packets ZC_SKILL_SELECT_REQUEST, CZ_SKILL_SELECT_RESPONSE and ZC_SPIRITS2 to the structure format. (#3292, #3291)
  • Changed the Tarot Card of Fate (CG_TAROTCARD) Strength (atk), The Magician (matk), The Devil (atk, matk), The Sun (atk, matk, def) bonus calculation to use the newly implemented atk/def percent system. This includes the new SCs SC_TAROTCARD_ATK_PERC, SC_TAROTCARD_MATK_PERC, SC_TAROTCARD_DEF_PERC. (#3290)
  • Changed the Gospel (PA_GOSPEL) bonus calculations to use the newly implemented atk/def percent system. This includes the new SC SC_GOSPEL_ATK_PERC. (#3290)
  • Changed the Provoke (SM_PROVOKE, MER_PROVOKE) SC (SC_PROVOKE) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Concentration (LK_CONCENTRATION) SC (SC_CONCENTRATION) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Bloodlust (HAMI_BLOODLUST) SC (SC_HAMI_BLOODLUST) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Vital Strike (LK_JOINTBEAT) SC (SC_JOINTBEAT) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Eske (SL_SKE) SC (SC_SKE) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Fleeting Move (HFLI_FLEET) SC (SC_HLIF_FLEET) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Curse SC (SC_CURSE) to use the newly implemented atk/def percent system. (#3290)
  • Changed SC_INCATKRATE to use the newly implemented atk/def percent system. (#3290)
  • Changed the Divest Weapon (RG_STRIPWEAPON) SC (SC_NOEQUIPWEAPON) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Mind Breaker (PF_MINDBREAKER) SC (SC_MINDBREAKER) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Divest Shield (RG_STRIPSHIELD) SC (SC_NOEQUIPSHIELD) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Fling (GS_FLING) SC (SC_FLING) to use the newly implemented atk/def percent system. (#3290)
  • Changed the Angelus (AL_ANGELUS) SC (SC_ANGELUS) to use the newly implemented atk/def percent system. (#3290)
  • Changed Poison (SC_POISON) and Deadly Poison (SC_DPOISON) to use the newly implemented atk/def percent system. (#3290)
  • Changed Asura Strike (MO_EXTREMITYFIST) to ignore atk percent bonuses. (#3290)
  • Changed several functions to take or return enum scb_flag where appropriate. (#3290)
  • Added a compatibility workaround for enum scb_flag (via typedef to e_scb_flag and int64_t constants) for pre-C23 MSVC versions that don't support enum values larger than 32 bit. This is only conditionally enabled on such compilers, and will be dropped when we'll be able to switch the C standard to C23. (#3290)
  • Split handling of the spiritball clif function into clif->spiritballs() and clif->soulball(), with incompatible arguments to the old clif->spiritball() calls. Second argument is now the amount of spheres, instead of their type. (#3291)

Fixed

  • Fixed a memory leak when reloading the unit params db (#3288)
  • Fixed an assertion failure in Auto Shadow Spell when the character has no cloned or reproduced skills. (#3292)
  • Fixed Auto Shadow Spell's inability to switch to a skill with a lower skill id than the previously selected one. (#3292)
  • Fixed an assertion failure when clicking "ok" with no skills selected or clicking "cancel" in Shadow Spell. (#3292, issue #3286)
  • Fixed the value of the flag field of packet ZC_SKILL_SELECT_REQUEST, expected to be 1 (meaning auto shadow spell) rather than the amount of skills in the list. (#3292)
  • Fixed soul balls not displaying correctly in clients from 2020 onwards. (#3291)

Deprecated

  • Support for C99 is deprecated and will be removed soon. C11 will be the required C standard since all the officially supported compilers implement that. This is a reminder that the mainstream support for VS2019 by Microsoft ended on Apr 9 2024, making VS2022 (version 17.4 and newer) the only version we currently support officially.

Other

  • Work on the rebalance patch is continuing on the rebalance branch.

v2024.04 (Rebalance edition)

01 May 19:36
e3f10ab
Compare
Choose a tag to compare
Pre-release

General changes

Rebalance changes

2-1 Classes

  • Rebalance of the 2-1 job skills, implementation based on kRO and kRO zero patch notes from 2018-10-31, iRO Wiki, rAthena and divine pride info, along with some in-game testing. (#3223, part of issue #2727)
Knight
  • Rebalance of KN_BOWLINGBASH (Bowling Bash)
    • Area of effect: 3x3 -> 5x5 centered on target
    • Number of hits changed
      • 2-handed weapons: number of hits depend on number of targets
        • 1 target: 2 hits
        • 2 ~ 3 targets: 3 hits
        • 4 or more targets: 4 hits
      • other weapons: 2 hits
    • Variable cast time removed
    • Knockback increased: 1 cell -> 5 cells
    • 1 second cooldown added
    • After using the skill, caster can't switch weapons for 1 second
    • Gutterline feature removed
  • Rebalance of KN_BRANDISHSPEAR (Brandish Spear)
    • Changed damage type: Short range physical -> Long range physical
    • Damage formula changed
    • Removed variable cast time
    • Added 0.5 s delay after skill
    • Added 1 s cooldown.
    • SP consumption increased: 12 -> 24.
    • After using the skill, caster can't switch weapons for 1 second
  • Rebalance of KN_TWOHANDQUICKEN (Two-Hand Quicken)
    • Gives additional 10% of ASPD (as equipment ASPD)
    • Now gives HIT +(2 * SkillLevel)
    • Now gives CRIT +(2 + SkillLevel)
  • Rebalance of KN_CHARGEATK (Charge Attack)
  • Fixed and variable casttime removed
  • Added Cooldown of 0.5 s
Blacksmith
  • Rebalance of BS_ADRENALINE (Adrenaline Rush)
    • Gives additional ASPD +10% to caster and party members (as Equip ASPD)
    • Added HIT +(5 + 3 * SkillLevel) effect to caster and party members
  • Rebalance of BS_OVERTHRUST (Over Thrust)
    • Weapon destruction chance removed
    • Party members bonus changed based on skill level: 5% / 5% / 10% / 10% / 15%
Assassin
  • Rebalance of AS_SONICBLOW (Sonic Blow)
    • Attack motion removed
    • Damage formula changed
    • Skill now does 50% more damage if target has less than 50% HP
    • Skill modifier is no longer halved when Enchant Deadly Poison is active
    • Global delay reduced: 2 s -> 0.5 s
    • 1 s cooldown added
  • Rebalance of AS_SPLASHER (Venom Splasher)
    • Damage formula changed
    • Explosion delay changed
    • Cooldown changed
    • Red Gemstone requirement removed
    • Explosion damage no longer splits between targets
Wizard
  • Rebalance of WZ_VERMILION (Lord of Vermilion)
    • Damage formula changed
      • Old: (100 ~ 330)% x 4 waves (10 hits each)
      • New: [400 + (Skill Level x 100)]% x 1 wave (20 hits)
    • Fixed casting time changed
      • Old: [2.48 - (Skill Level × 0.08)] s
      • New: 1.5 s at all skill levels
    • Variable casting time changed
      • Old: [9.92 - (Skill Level × 0.32)] s
      • New: [6.5 - (Skill Level × 0.2)] s
    • Global delay of skills reduced
      • Old: 5 s at all skill levels
      • New: 1 s at all skill levels
    • 5 s cooldown added
    • Chance of causing blind effect increased
  • Rebalance of WZ_METEOR (Meteor Storm)
    • Fixed casting time reduced
      • Old: 2.4 s at all skill levels
      • New: 1.5 s at all skill levels
    • Variable casting time reduced
      • Old: 9.6 s at all skill levels
      • New: 6.3 s at all skill levels
    • Global delay of skills reduced
      • Old: 2 ~ 7 s
      • New: 1 s at all skill levels
    • Cooldown added: [2 + (Skill Level x 0.5)] s
  • Rebalance of WZ_STORMGUST (Storm Gust)
    • Fixed casting time changed
      • Old: [0.8 + (Skill Level * 0.16)] s
      • New: 1.5 s at all skill levels
    • Variable casting time changed
      • Old: [3.2 + (Skill Level * 0.64)] s
      • New: [4.3 + (Skill Level * 0.2)] s
    • Global delay of skills reduced
      • Old: 5 s at all skill levels
      • New: 1 s at all skill levels
    • 6 s cooldown added
    • Damage formula changed
      • Old: (100 + 40 * Skill Level)% MATK
      • New: (70 + 50 * Skill Level)% MATK
  • Rebalance of WZ_JUPITEL (Jupitel Thunder)
    • Fixed casting time changed
      • Old: [0.32 + (Skill Level × 0.08)] s
      • New: 0.5 s at all skill levels
    • Variable casting time changed
      • Old: [1.28 + (Skill Level × 0.32)] s
      • New: [1.8 + (Skill Level × 0.2)] s
  • Rebalance of WZ_EARTHSPIKE (Earth Spike)
    • Damage formula changed
      • Old: 100% per hit
      • New: 200% per hit
    • Fixed casting time changed
      • Old: (Skill Level x 0.112) s
      • New: 0.2 + (Skill Level x 0.2) s
    • Variable casting time changed
      • Old: (Skill Level x 0.448) s
      • New: 0.7 + (Skill Level x 0.5) s
    • Global delay of skills reduced
      • Old: 0.8 + (Skill Level x 0.2) s
      • New: 0.9 + (Skill Level x 0.1) s
  • Rebalance of WZ_HEAVENDRIVE (Heaven's Drive)
    • Fixed casting time changed
      • Old: (Skill Level x 0.16) s
      • New: 0.8 s at all skill levels
    • Variable casting time changed
      • Old: (Skill Level x 0.64) s
      • New: 0.9 + (Skill Level x 0.2) s
    • Global delay of skills reduced
      • Old: 1 s at all skill levels
      • New: 0.5 s at all skill levels
Priest
  • Rebalance of PR_MAGNUS (Magnus Exorcismus)
    • Fixed casting time reduced: 3 s -> 1 s
    • Variable casting time reduced: 12 s -> 4 s
    • Global delay of skills reduced: 4 s -> 1 s
    • Cooldown added: 6 s
    • Skill now deals damage to monsters of all race monsters (instead of only Undead property and Demon race monsters)
    • Skill now deals additional 30% damage per hits to monsters with:
      • Demon race
      • Shadow property
      • Undead race or property
  • Rebalance of PR_MACEMASTERY (Mace Mastery)
    • Also gives CRI +(SkillLevel) when equipped with Maces
  • Rebalance of PR_SUFFRAGIUM (Suffragium)
    • Now affects all nearby party members (Range: 18 cells)
    • Now casts on Self instead of Target
    • Effect reduced: 15% / 30% / 45% -> 10% / 15% / 20% cast time reduction
    • Duration changed:
      • Old: 30 s / 20 s / 10 s or when you cast a skill
      • New: 60 s (no longer ends when you cast a skill)
    • SP cost increased: 8 SP -> 45 / 57 / 69 SP
    • 0.5 s fixed casting time added
    • 1 s variable casting time added
    • Global delay of skills reduced: 2 s -> 1 s
    • 30 s cooldown added
  • Rebalance of PR_IMPOSITIO (Impositio Manus)
    • Now affects all nearby party members (Range: 18 cells)
    • Now casts on Self instead of Target
    • Effect changed:
      • Old: ATK +(5 x SkillLevel)
      • New: ATK/MATK +(5 x SkillLevel)
    • Lower level buffs does not replace an active, higher level, one
    • SP cost increased:
      • Old: 10 + (Skill Level x 3)
      • New: 56 + (Skill Level x 3)
    • Duration increased: 60 s -> 120 s
    • Fixed casting time added: 0.5 s
    • Variable casting time added: 1 s
    • Global delay reduced: 3 s -> 1 s
    • Cooldown added: 30 s
Hunter
  • Rebalance of HT_LANDMINE (Land Mine), HT_CLAYMORE (Claymore Trap) and HT_BLASTMINE (Blast Mine)
    • Fixed casting time reduced: 1 s -> 0.3 s
    • Variable casting time added: 0.5 s
  • Rebalance of HT_BLITZBEAT (Blitz Beat)
    • Damage formula changed
    • Auto Blitz Beat no longer splits the damage among multiple targets

v2024.03

30 Mar 23:02
c6f7a55
Compare
Choose a tag to compare

This month @guilherme-gm joined us as a core developer. His long and respectable contribution history says he doesn't need much of an introduction.
He's currently working on a series of pull requests introducing the (long overdue) rebalance changes that I'll mention below, and during the past months he helped with templates and suggestions for the new proposed documentation website (also mentioned below).

Welcome @guilherme-gm and thank you!

Added

  • Created a rebalance branch to collect all the rebalance-related PRs as there will be inconsistencies in the game until they are all merged.
    • The code merged into this branch is already production-grade and would have been merged to master other than for consistency reasons.
    • Those that wish to preview the changes before they are complete are free to use this branch (see its CHANGELOG.md for details of the merged changes so far).
    • It will be eventually merged into master and will be treated the same way as master (no force-pushes, no history rewrites).
  • Migrated the Hercules GitHub wiki to a new platform (MkDocs) at the URL https://docs.herc.ws/
  • Added GitHub Actions CI workflows targeting Visual Studio on Windows. (#3284)

Changed

  • Changed openlapineupgradeui() and openlapineddukddakboxui() to allow calls without an item id when used in item scripts. (#3272)

Fixed

  • Fixed a regression in the item trade packet (2020+) causing an incorrect item grade to be sent. (#3287, since v2021.12.01)
  • Fixed a build error on Mac computers with different types of cores, such as the 'performance' and 'efficiency' cores of the M series CPUs. (#3271)

v2024.03 (Rebalance edition)

30 Mar 23:06
8006a79
Compare
Choose a tag to compare
Pre-release

General changes

Rebalance changes

All these changes only affect Renewal. Pre-renewal is unchanged.

First classes

  • Changes from the 2018.10.31 patch (#3218, issue #2725)
Swordsman
  • Rebalance of SM_MAGNUM (Magnum Break)
    • After skill delay reduced (2 seconds -> 0.5 seconds)
    • (already implemented) Added 2 seconds of Cooldown
Merchant
  • Rebalance of MC_LOUD (Crazy Uproar)
    • Change affected players (Caster-only -> All party members in screen range)
    • Effect changed:
      • Str +4 (kept as is)
      • Extra ATK +30 (new effect)
    • CastTime: None -> 1 second
    • FixedCastTime: None -> 0.5 seconds
    • CoolDown: None -> 30 seconds
Magician
  • Rebalance of MG_FIREBOLT (Fire Bolt)
    • Fixed casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.2 seconds.
      • New: 0.2 + (Skill Level × 0.1) seconds
    • Variable casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.8 seconds.
      • New: 0.2 + (Skill Level × 0.3) seconds
    • Global delay of skills changed.
      • Old: 0.8 + (Skill Level × 0.2) seconds
      • New: 1.4 seconds at all skill levels.
    • Values based on iRO Wiki
  • Rebalance of MG_COLDBOLT (Cold Bolt)
    • Fixed casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.2 seconds.
      • New: 0.2 + (Skill Level × 0.1) seconds
    • Variable casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.8 seconds.
      • New: 0.2 + (Skill Level × 0.3) seconds
    • Global delay of skills changed.
      • Old: 0.8 + (Skill Level × 0.2) seconds
      • New: 1.4 seconds at all skill levels.
    • Values based on iRO Wiki
  • Rebalance of MG_LIGHTNINGBOLT (Lightning Bolt)
    • Fixed casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.2 seconds.
      • New: 0.2 + (Skill Level × 0.1) seconds
    • Variable casting time changed.
      • Old: (0.4 + (Skill Level × 0.4)) x 0.8 seconds.
      • New: 0.2 + (Skill Level × 0.3) seconds
    • Global delay of skills changed.
      • Old: 0.8 + (Skill Level × 0.2) seconds
      • New: 1.4 seconds at all skill levels.
    • Values based on iRO Wiki
  • Rebalance of MG_THUNDERSTORM (Thunder Storm)
    • Fixed casting time changed.
      • Old: (Skill Level × 0.8) x 0.2 seconds.
      • New: 1.5 seconds at all skill levels.
    • Variable casting time changed.
      • Old: (Skill Level × 0.8) x 0.8 seconds.
      • New: 2.5 + (Skill Level × 0.2) seconds
    • Values based on iRO Wiki
  • Rebalance of MG_FIREBALL (Fire Ball)
    • Fixed casting time changed.
      • Old: 0.3 seconds at skill level 1-5, 0.2 seconds at skill level 6-10.
      • New: 0.2 seconds at all skill levels.
    • Variable casting time changed.
      • Old: 1.2 seconds at skill level 1-5, 0.8 seconds at skill level 6-10.
      • New: 0.8 seconds at all skill levels.
    • Global delay of skills changed.
      • Old: 1.5 seconds at skill level 1-5, 1.0 seconds at skill level 6-10.
      • New: 0.7 seconds at all skill levels.
  • Rebalance of MG_SOULSTRIKE (Soul Strike)
    • Global delay of skills changed.
      • Old: 1.2 - 2.7 seconds at skill level 1-10.
      • New: 1.4 seconds at all skill levels.
  • Rebalance of MG_FROSTDIVER (Frost Diver)
    • Global delay of skill changed: 1.5 s -> 0.5 s
Acolyte
  • Moved bonus calculation of AB_CLEMENTIA and AB_CANTO to the sc_start logic.
  • Rebalance of AL_BLESSING (Blessing)
    • Also increases HIT +2 per skill level
    • Clementia also gives additional HIT +1 for each 10 job levels
  • Rebalance of AL_INCAGI (Increase Agility)
    • Also increases ASPD +1% per skill level
    • Canto Candidus also gives additional ASPD +1% for each 10 job levels
  • Rebalance of AL_ANGELUS (Angelus)
    • Now increases +50 MaxHP per SkillLevel
    • The increased HP also gets healed
    • 30s cooldown added
  • Rebalance of AL_HOLYLIGHT (Holy Light)
    • Fixed casting time changed: 0.4 s -> 0.2 s
    • Variable casting time changed: 1.6 s -> 0.8 s

v2024.02

29 Feb 23:51
4e38e66
Compare
Choose a tag to compare

Added

  • Added GitHub Actions CI builds on macOS (Intel and ARM). (#3281)

Changed

  • Renamed the arguments of the aMalloc(), aCalloc(), aStrndup(), aRealloc(), aReallocz() macros to make it harder to accidentally swap their order. (#3280)

Fixed

  • Fixed expandinventory() not allowing to return to the initial minimum inventory size. (#3270)
  • Fixed a race condition allowing for a call to clif->pLoadEndAck() before the client's loadendack is received. (#3277)
  • Fixed a memory leak of emblem data when guilds are unloaded or disbanded. (#3278)
  • Fixed several instances of swapped arguments in aCalloc() calls, causing warnings in gcc-14. (#3280)
  • Fixed a regression causing AutoSpell not to replace the selected skill when the new skill has lower level than the previous one. (#3282)

Other

  • Updated copyright headers for year 2024.

v2023.12

31 Dec 20:23
b5a59b1
Compare
Choose a tag to compare

Added

  • Added a warning when enabling the RoDEX account box on unsupported client packetvers. To continue using this feature with patched RE clients it is necessary to uncomment the ENABLE_RODEX_ACCOUNT_MAIL_RE_PATCH macro in core.h. (#3263)
  • Added a warning when a script sends account mails when the feature is disabled on the server. (#3263)
  • Added an option to allow combo skills requested during previous skill's delay to be accepted (and queued up for execution), making them easier to trigger especially by players with high latency. The option can be enabled by setting combo_cache_skill to true in conf/map/battle/skill.conf. (#3260, #3266)
  • Added constants for all messages.conf messages replacing a large amount of magic numbers. The maximum number of messages is now defined in common/msgtable.h as MSGTBL_MAX. See the related pull request description for a conversion tool that may be used to migrate custom constants. (#3265)

Changed

  • Enabled the RoDEX account box by default since the default packetver supports it. (#3263)
  • Improved the error messages, providing additional useful details, when a char server's connection request to the login server is rejected. (#3264)
  • Cleaned up some repetition from the job name switches, replaced with X macro using the class*.h files. See the pull request description for migration details in case of custom jobs. (#3265, related to #165)

Fixed

  • Fixed the snap_dodge setting not working with MO_EXTREMITYFIST. (#3241, issue #638)
  • Fixed stat food and cash stat food being stacked on top of each others. Cash food of higher level is able to overwrite buffs from normal food, while normal food won't overwrite buffs from cash food. (#3250, issue #2489)
  • Fixed some SC counters (including Storm Gust) not getting reset to 0 when a unit dies. (#3255, issue #3196)
  • Fixed costumes blocking itemskill execution, even when items are being consumed. (#3257, related to issue #2925)
  • Fixed a race condition that may cause SC statuses to be received after the character status calculations are done, when the server is under heavy load. (#3256)
  • Fixed a compiler warning caused by swapped aCalloc arguments. (#3264)
  • Fixed the MO_TRIPLEATTACK animation not workingn when there's no possible chainable combo skill. (#3259)
  • Removed an incorrect afterCastActDelay from PA_SACRIFICE in pre-renewal. (#3259)
  • Removed the fixed target from some combo skills. Monk skills act on the current target even if the last skill was used on a different enemy. (#3259)
  • Fixed MO_TRIPLEATTACK overwriting attackabletime. (#3259)
  • Fixed combo delays applying to all SC_COMBOATTACK based skills and not sending the proper time to the client. (#3259)
  • Fixed one cell movement not ignoring hidden objects (such as GMs) in its stack limit calculation. (#3259)

Removed

  • Removed nearly identical redundant Visual Studio solutions for different versions. Only one version is kept, compatible with all the supported VS versions. The AppVeyor CI configuration is updated accordingly. (#3262, #3267, #3268)

v2023.11

30 Nov 00:12
2762a8a
Compare
Choose a tag to compare

Added

  • Added an option to use an unit's current facing direction to search for free cells, instead of defaulting to east. (#3242)
    • The option, currently disabled by default, can be turned on by setting keep_dir_free_cell (conf/map/battle/misc.conf) to true.
    • Advantages:
      • Improves distribution of mobs when dispersing after being grouped. This setting allows monsters to spread in a circular fashion instead of forming a long horizontal line.
      • Allows characters to move more naturally if they came from the east, instead of walking back.
      • In some instances, fixes characters walking in a loop unable to pick up an item. (#1241)

Changed

  • Changed the map server's behavior when receiving invalid connections with unknown protocols to terminate the connection after receiving the second byte. (#3247)
  • Disabled the possibility of attaching a script to a character in autotrade mode through attachrid(). This solves a number of issues with many script commands assuming a client to be attached. (#3243, issue #568)
  • Updated map list, mapcache, NPC and hateffect constant databases. (#3249)
  • Extracted the Blade Stop (Root) trigger conditions to a separate function for better readability and maintainability. (#3254)

Fixed

  • Fixed some job concurrency conflicts in the GitHub Actions workflows causing some tests to be skipped for pushes to the master branch. (#3239)
  • Consolidated the GitHub Actions workflow entry point to always be the 'controller' regardless of the trigger condition. (#3239)
  • Fixed MO_TRIPLEATTACK not applying the same motion delay as the client in the case the next combo is not possible, causing visual glitches. (#3240)
  • Fixed the MO_TRIPLEATTACK delay formula increasing delay with dex instead of decreasing it. (#3240)
  • Fixed an issue causing characters to be stuck in a walk loop while trying to pick up an unreachable item on the ground. (#3242, issue #1241)
  • Fixed a deprecation warning issued by MariaDB causing CI test failures. (#3247)
  • Fixed range and cast time for ASC_BREAKER. (#3245, issue #1104)
  • Fixed SA_DISPEL not working in duels. (#3246, issue #640)
  • Added support for GRF files larger than 2 GiB on Windows, fixing failures in mapcache generation. (#3248, issue #2935)
  • Fixed songs not triggering their onleft or onout events when overlapping and turning into dissonance. (#3251, issue #1501)
  • Fixed the range checks of Blade Stop/Root: (#3254)
    • Fixed the target's (as in triggering attack target, and Blade Stop caster) equipped weapon wrongly affecting the skill's working range.
    • Success range is changed to 2, to match the official behavior.
    • In pre-re, changed it to always succeed against player attackers regardless of range.
    • Changed it to always succeed for non-player casters regardless of range (custom Hercules behavior, officially only players may cast Blade Stop).
  • Fixed CELL_NOSTACK making mob ai not being able to reach target under certain conditions. (#3244, issue #574)
  • Fixed the critical bonus calculation from status effects getting truncated to 0.3 CRIT per point of LUK instead of 1/3. (#3252, issue #3094)

v2023.10

20 Oct 22:41
b097666
Compare
Choose a tag to compare

Added

  • Added an option to synchronize the flinch animation with walk delay, improving positional lag. The option is disabled by default, uncomment the WALKDELAY_SYNC definition in src/config/core.h to enable it. (#3232)
  • Implemented logic to generate "item links" serverside and the related script command getitemlink(), including various core functionalities this relies on. (#3236, #3238)
    • This also adds basic support for the base62 encoding used by the client.

Changed

  • Refactored Auto Spell (Hindsight) and moved its configuration to a libconfig table. (#3237)
    • The configuration is available in the {re,pre-re}/autospell_db.conf file, see the documentation in the file header.
    • The separation between game logic (in skill.c) and client/display logic (in clif.c) has been improved.
    • Cast end logic has been separated from the large skill castend function into smaller dedicated functions.
    • The function skill->autospell() has been renamed to skill->autospell_spell_selected() to make its purpose clearer.
    • This refactoring will simplify some of the upcoming rebalance changes.
  • Added concurrency settings to the GitHub CI workflows to cancel old ongoing builds when a new commit is pushed, speeding up testing the up to date version. (#3238)

Fixed

  • Fixed the HPMHooking API plugin builds in VS 17.x (#3231)
  • Fixed AM_ACIDTERROR not ignoring defense on units other than those defined in battle_config.vit_penalty_target (i.e. players). (#3234)
  • Fixed Sage's free case increasing ASPD instead of decreasing it when the skill level is lower than 10. (#3235)
  • Fixed the clang-13 build in the GitHub CI, failing due to a removed package in debian unstable. (#3238)
  • Fixed AppVeyor CI builds, failing due to a missing mysql56 image. (#3238)