Skip to content

Releases: HerculesWS/Hercules

v2021.07.07

08 Jul 02:53
ed16f78
Compare
Choose a tag to compare

Changed

  • Updated some guild-related packets to use the struct format. (#3016)

Fixed

  • Fixed off-hand damage bypassing any card reductions on the target. (#3014, issue #3011)
  • Fixed indentation and extra blank lines in the renewal skill db file. (#3012)
  • Fixed the use of setunitdata() on a mob to change that specific unit's view data instead of overwriting it globally. Any such changes will now persist in case of the mob database is reloaded. (#3006)

v2021.06.02

02 Jun 23:13
4991d69
Compare
Choose a tag to compare

Added

  • Added diagnostic checks around map free blocks when asan is on, to track bl double free issues. (#3005)
  • Added support for checking the clients' supported features through client flags (requires a client patched with the SendClientFlags patch - currently supports ENABLE_CASHSHOP_PREVIEW_PATCH only, more to come later). See the login_configuration/permission/check_client_flags and login_configuration/permission/report_client_flags_error settings in login-server.conf. (#3001)
  • Added support for the Rebellion skills. (#2997)

Changed

  • Updated the cooldown of Neutral Barrier (NC_NEUTRALBARRIER) to depend on the skill level. (#2934)
  • Changed successremovecards() to automatically re-equip the item, for consistency with failedremovecards(). (part of #3004)

Fixed

  • Fixed an issue that prevented dual monster races from completing. (#2990, issue #2989)
  • Fixed a crash with evolved homunculi. (#3008)
  • Fixed mapflags in instanced maps not getting reloaded correctly after scripts are reloaded. (#3003, issue #3002)
  • Fixed the visual effect of Killing Cloud (SO_CLOUD_KILL). (#2980, issue #2978)
  • Fixed a regression in Ankle Snare (HT_ANKLESNARE) caused by a recent Manhole update. (#2965, issue #2964)
  • Fixed an issue that prevented a character from equipping items after attempting to use the Refine skill with no refinable items in inventory. (#3007)
  • Fixed an issue that prevented the automatic re-equipping of items by failedremovecards() setequipoption(). (#3004)

v2021.05.05

06 May 00:28
18224d0
Compare
Choose a tag to compare

Added

  • Added settings to modify the chain item drop rates. See item_rate_add_chain, item_drop_add_chain_min and item_drop_add_chain_max in drops.conf for details. (#2983, issue #2982)
  • Added a check to ensure that the map->freeblock_lock() and map->freeblock_unlock() calls are balanced (GCC only). (#2992)

Changed

  • Documented that struct script_state::rid can contain the GID of a mob when called through OnTouchNPC. (part of #3000)
  • Merged the homunculus exp tables into exp_group_db (#2998)

Fixed

  • Fixed a crash in the WL_WHITEIMPRISON skill as well as possible crashes in the ST_SWORDREJECT and ASC_BREAKER skills. (#2991)
  • Fixed the adoption request entry in the character context menu. (#2993)
  • Fixed the Vacuum Extreme status becoming permanent until logout or death. (#2995, issue #2919)
  • Fixed Free Cast ignoring other speed modifiers (bypassing speed debuffs such as Curse). (#2987, issue #2976)
  • Fixed the trade restrictions for the Monster Ticket item, which should disallow dropping, trading, etc. (#2986, issue #2985)
  • Fixed an issue in the custom warper NPC that caused characters to get stuck when selecting the last warp option when it wasn't set yet. (#2984)
  • Fixed an error when getarraysize(), soundeffectall(), atcommand() or useatcmd() are called from an OnTouchNPC script. (#3000, related to issue #2989)
  • Fixed montransform(), clan_join(), clan_leave() and clan_master() not reporting an error when called without RID attached. (part of #3000)
  • Fixed the Water Screen skill, now deflecting the damage to the Aqua elemental spirit and healing the master by 1000 HP every 10 seconds. (#2981)
  • Fixed the Guardians in WoE:SE spawning in random locations instead of their designated ones. (#2999)

Removed

  • Removed the homunculus_max_level and homunculus_S_max_level battle configuration flags, now replaced by the exp_group_db configuration. (part of #2998 and 32fea25)

v2021.04.05+1

15 Apr 08:06
bfa3707
Compare
Choose a tag to compare

Fixed

  • Fixed a regression that caused the buffs from various skills not to get applied. (#2979, issue #2977)

v2021.04.05

06 Apr 22:44
594d7cd
Compare
Choose a tag to compare

Added

  • Added new SP_* constants in preparation for adding 4th jobs and reformatted the status_point_types enum to have one entry per line, with their respective values. (part of #2968)
  • Added support for the Baby Summoner job class. (part of #2968)
  • Added support for the Baby Ninja job class. (part of #2968)
  • Added support for the Baby Kagerou and Baby Oboro job classes. (part of #2968)
  • Added support for the Baby Taekwon job class. (part of #2968)
  • Added support for the Baby Star Gladiator job class. (part of #2968)
  • Added support for the Baby Soul Linker job class. (part of #2968)
  • Added support for the Baby Gunslinger job class. (part of #2968)
  • Added support for the Baby Rebellion job class. (part of #2968)
  • Added support for the Star Emperor job class and related skill ID constants and skill database entries. Skill ID conflicts between Star Emperor and Rebellion were solved in favor of the former for renewal and the latter for pre-renewal for the time being. (part of #2968)
  • Added support for the Baby Star Emperor job class. (part of #2968)
  • Added support for the Soul Reaper job class and related skill ID constants and skill database entries. (part of #2968)
  • Added support for the Baby Soul Reaper job class. (part of #2968)

Changed

  • Moved the mappings between skills and status changes (Skill2SC table) into the StatusChange field of the skill database. The Skills field of the sc_config is renamed to Skill and limited to one associated skill per SC. (#2971)
  • Added the corresponding numeric value next to each entry in the e_class enum, to prevent accidental renumbering and to make lookup easier. (part of #2968)
  • Added some missing constants for job IDs or separators in the e_class enum. (part of #2968)
  • Improved validation of the class_exp_table of the job_db with additional sanity checks. (part of #2968)
  • Moved the EAJ_* constants from constants.conf to the source and added the ones that were missing (EAJ_WEDDING, EAJ_XMAS, EAJ_SUMMER, EAJ_BABY_SUMMONER). (part of #2968)
  • Changed the warning message displayed when a constant is redefined with the same value as previously defined to mention that it has the same value. (part of #2968)
  • Renamed the job_name() function to pc_job_name(). The public interface name is still pc->job_name(). (part of #2968)
  • Moved the job enum values into separate files (common/class.h, common/class_special.h and common/class_hidden.h), to be accessed through the ENUM_VALUE() X-macro and reduce repetition. (part of #2968)
  • Added the -Wswitch-enum warning to the default compiler settings (with an exception for libbacktrace). (part of #2968)
  • Improved validation of job_db2, now detecting missing jobs. (part of #2968)
  • Changed some function parameters from integers to the appropriate enums. (part of #2968)
  • Split the status change config into renewal and pre-renewal. (part of #2963)
  • De-hardcoded the status change calculation flags, moving them from the source to the CalcFlags field of the sc_config. (#2963)

Fixed

  • Fixed a regression in the association between skills and status changes. (part of #2971, issue #2969)
  • Added support for the Summoner job to the db2sql plugin. (part of #2968)
  • Fixed validation of the skills cast through Abracadabra (Hocus Pocus). (#2972, related to #2859, issue #2824)
  • Fixed validation of the skills cast through Improvised Song. (#2972, related to #2859, issue #2823)
  • Worked around a client issue (packet containing garbage) that prevented proper validation of the Warp Portal skill use request when cast through Abracadabra, causing the caster to get stuck and unable to cast any other skills until relogging or teleporting. (#2972)

Removed

  • Removed the unused FixedCastTime field from the pre-renewal skill DB. (part of #2968)
  • Removed the status->set_sc() function, no longer needed. (part of #2963)

v2021.03.08

09 Mar 09:44
bbf0515
Compare
Choose a tag to compare

Added

  • Added support for preview in the cash shop. This is disabled by default and can be enabled by defining ENABLE_CASHSHOP_PREVIEW_PATCH or through the configure flag --enable-cashshop-preview-patch. A client patch is necessary, available at http://nemo.herc.ws/patches/ExtendCashShopPreview (#2944)
  • Added a console warning if a message that is not present in messages.conf is requested. (#2958)
  • Added the missing icons for SC_DEFSET and SC_MDEFSET. (#2953)
  • Added the SC_NO_RECOVER_STATE status preventing HP/SP recovery and the related item bonus bStateNoRecoverRace. (#2956)

Changed

  • De-hardcoded the association between status changes and skills from the source code. A new field Skills is added to the sc_config, allowing to specify a list of skills for each status change entry. The macro add_sc has been removed from status.c, use status->set_sc() instead. (#2954)
  • Converted packets ZC_NOTIFY_SKILL, ZC_USE_SKILL, ZC_NOTIFY_GROUNDSKILL, ZC_SKILL_POSTDELAY and ZC_NOTIFY_SKILL_POSITION to the structure format. (#2951)
  • Converted the Homunculus database to libconfig. A tool to help converting custom databases has been provided in tools/homundbconverter.py. (#2941)
  • De-hardcoded the list of skills that are blocked under SC_STASIS and SC_KG_KAGEHUMI. A new pair of SkillInfo flags BlockedByStasis and BlockedByKagehumi has been added to the skill database. (#2959)
  • Updated the item script of Velum_Flail to its official effects. (part of #2956)

Fixed

  • Fixed compilation with mingw. (#2945)
  • Fixed the CodeQL analysis builds in the CI. (#2946)
  • Fixed a possible use after free in unit_skilluse_id2(). (#2947)
  • Fixed the save point message of the Kafra in alb2trea. (#2950)
  • Fixed some issues/regressions in the regeneration code: (#2952)
    • Fixed an issue that caused the SP regeneration rate bonus to be applied to the HP regeneration.
    • Fixed the HP/SP regeneration always capping to a minimum of 1, causing unintended behavior. (issue #2910)
    • Fixed a issue that caused the homunculus regeneration configuration to apply to elementals instead.
    • Fixed the Happy Break bonus not triggering.
    • Fixed the doridori doubled SP regeneration applying to jobs other than Super Novice.
  • Fixed Emergency Call ignoring unit_skilluse_id2() in Renewal. (#2949)
  • Fixed Manhole working on Guardians/Emperium while it shouldn't. (#2942)
  • Fixed successremovecard() not running the cards' unequip scripts. (#2933, issue #2922)

v2021.02.08

09 Feb 06:02
ce1e4f9
Compare
Choose a tag to compare

Added

  • Extended the quest database with new options. (#2874)
    • Mob ID can be set to 0 to allow any monster ID.
    • A monster level range can now be specified.
    • A target monster's map can now be specified.
    • A target monster's type (size, race and/or element) can now be specified.
  • Added new quest database entries using the new options. (part of #2874)
  • Added a failed assertion backtrace report in the removing player error in unit->remove_map(). (part of #2938)
  • Added support for constants and improved error messages in the quest DB. This affects the Mob_ID, Drops/ItemId and Drops/MobId fields. (#2886)
  • Added inheritance mechanism for the pet DB. Inheritance works in the same way as the mob and item databases, allowing to specify the Inherit: true flag in order to inherit (rather than overriding) an existing entry with the same Id. (#2206, issue #2181)
  • Updated the map database, NPC and Hateffect constants with new data. (#2936)

Changed

  • Changed the free cell search (as used by random mob spawns or teleport) to ignore the map margins, as in official servers. The margin size defaults to the official value of 15 and can be changed by editing the search_freecell_map_margin setting in misc.conf. (#2911)
  • Refactored and sanitized map->search_freecell(). The function has been renamed to map->search_free_cell() since the meaning of its return values has changed. (part of #2911)
  • Refactored and documented some pet database functions and added validation of the pet DB entries before they're inserted into the database. The new constant ITEMID_PET_FOOD has been added. (part of #2206)

Fixed

  • Fixed a signed left shift overflow in socket.c. (part of #2938)
  • Fixed failing github workflows builds, switching from clang-10 to clang-11 since the former is no longer available in the Debian repositories. (part of #2938)
  • Forcefully disabled the compiler flag -fcf-protection to avoid issues in the setjmp() calls. (#2938)
  • Fixed some missing item IDs referenced by the quest DB in pre-re mode. (part of #2886)
  • Fixed grfio issues with large grf files. (#2937)

v2021.01.11

12 Jan 10:12
06aed58
Compare
Choose a tag to compare

Added

  • Integrated the Renewal mob database with the correct DamageTakenRate value for MVPs that require it. Those MVPs have a green aura and only receive 10% of the damage dealt to them. (#2875)
  • Added an enum for client action types. See enum action_type. (#2930)
  • Added skill prerequisite checks before leveling up homunculus skills, allowing the definition of prerequisites for non-evolved or non-loyal homunculi, as it was previously limited to those. The check is disabled when the player_skillfree setting is enabled in the battle config. (#2807)
  • Added constants for the mercenary_delete() script command as well as the mercenary->delete() function and documentation for the formerly undocumented values. See enum merc_delete_type and the script constants MERC_DELETE_*. (part of #2858, issue #2843)

Changed

  • Cleaned up mob database from redundant MVPExp: 0 fields. (part of #2875)
  • Updated packet CZ_REQUEST_ACTNPC to use a struct. (part of #2930)
  • Changed the default mercenary delete type of the mercenary_delete() script command to be fired by the user (not updating loyalty). (#2843)

Fixed

  • Fixed an issue that caused the Sign quest to lock up and become unfinishable for everyone when a player times out or logs out under certain conditions. (#2921)
  • Fixed an exploit that allowed multiple people into the solo room of the Sign quest. (part of #2921)
  • Fixed a failed assertion when using the MH_SUMMON_LEGION skill. (#2929)

Removed

  • Removed the undocumented and meaningless return value of mercenary->delete(), now returning void. It was previously relying on the return value of two other functions, and ultimately always returning zero. (part of #2843)

v2020.12.14+1

02 Jan 13:57
12c4c77
Compare
Choose a tag to compare

Fixed

  • Fixed a crash in unit->run_hit() caused by a regression in the last update. (#2924)

v2020.12.14

15 Dec 01:43
2f410d1
Compare
Choose a tag to compare

Added

  • Added a warning when setnpcdisplay() or setunitdata() is called on a floating NPC. (#2907)
  • Added support for RSW formats up to 2.5 for reading map water level. (#2916)
  • Added a status->check_skilluse_mapzone() function, simplifying status->check_skilluse() and adding a useful plugin hooking point. (#2893)

Changed

  • Second part of the refactoring of the functions in unit.c, adding code documentation and following the code style guidelines. Functions have been renamed when backward compatible changes to the arguments or return values were made. (#2783)
    • Added proper documentation in doxygen-format.
    • Moved variables declaration closer to their first use
    • Corrected mistreatment on checks of non-boolean variables
    • Renamed some variables to clarify their use
    • Saved re-used calculations in variables or create local macros for them
    • Simplified logical checks / conditions when possible
    • Changed returning error-code in functions to obey code-style guidelines (Functions that are affected by this are renamed so that custom code fails to compile as to point at that change of behavior.)
    • Split too long lines according to code-style guidelines
    • Made functions use enums for directions (enum unit_dir), when dealing with a direction context
    • Reduced code-repetition by separating code-chunks into new functions
    • Fixed remaining code-style after applying all these changes if necessary
    • The following functions have been refactored:
      • unit->walktobl() (renamed to unit->walk_tobl())
      • unit->run_hit()
      • unit->run()
      • unit->escape() (renamed to unit->attempt_escape())
      • unit->movepos()
      • unit->walk_toxy_timer() (return value fix)
      • unit->blown() (renamed to unit->push())
      • path->blownpos() (related to the unit->blown() change)
      • added npc->handle_touch_events() function
      • the is_boss() macro now returns a boolean
  • Added static assertion checks to prevent MAX_STORAGE and MAX_GUILD_STORAGE from causing oversized inter-server packets (#2904)
  • Disabled the HP bar on Emperium and MVP monsters by default. The configuration flag show_monster_hp_bar has been extended to a bitmask, to allow specifying different setting for normal monsters, Emperium and MVPs. The new default value is 1 (normal monsters only), while the value corresponding to the previous behavior is 7 (4|2|1). (#2821)

Fixed

  • Fixed a walk delay error in unit_stop_walking(). (part of #2783)
  • Fixed homunculi and mercenaries not warping back to their master in time. (part of #2783)
  • Reverted an unintended logical change in unit->walk_toxy_timer() done during the first part of the unit.c refactoring. (#2783)
  • Fixed a warning (Warning: #1681 Integer display width is deprecated and will be removed in a future release.) when importing the database schema in recent versions of MySQL. (#2903)
  • Fixed compilation with recent versions of the MySQL/MariaDB client libraries. (#2917)
  • Fixed a farming exploit at the Cursed Spirit NPC. (#2883)
  • Fixed the configuration flag monster_loot_type not working as intended. (#2855, issue #2834)

Removed

  • Removed the unused function skill->get_linked_song_dance_id(). (#2906)