Skip to content

Releases: HerculesWS/Hercules

v2018.12.16

17 Dec 02:21
406ae36
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2018-12-12. (#2324)
  • Added support for the AC_LOGIN_OTP packets. (part of #2324)
  • Added script command enchantitem() and related packet ZC_ENCHANT_EQUIPMENT. (part of #2324)
  • Added script command servicemessage() and related packet ZC_SERVICE_MESSAGE_COLOR. (part of #2324)
  • Split packets struct definitions out from lclif into separate files for AC and CA packets. (part of #2324)
  • Added struct definitions header for HC packets. (part of #2324)
  • Added support for expandable inventory size, including database persistence, inventory expansion packets, the script commands expandInventoryAck(), expandInventoryResult(), expandInventory(), getInventorySize(), the item Inventory_Extension_Coupon and the script npc/other/inventory_expansion.txt. (part of #2324)
  • Added support for the client commands /viewpointvalue and /setcamera (like @camerainfo). The atcommand aliases @setcamera and @viewpointvalue are also provided. (part of #2324)
  • Added needed_status_point() script function and the global function F_CashReduceStat(), for permanent status point reduction. (#2246)
  • Added an option to include script interaction into the idle criteria, disabled by default. See idletime_criteria in conf/map/battle/player.conf and BCIDLE_SCRIPT. (#2244)

Changed

  • Extended support for 32 bit item IDs to the Zero and Main clients that support them. (part of #2324)
  • Renamed packet identifier macros from PACKET_ID_* to HEADER_*. (part of #2324)
  • Renamed packet struct definitions from packet_* to PACKET_*. (part of #2324)
  • Increased MAX_PACKET_LOGIN_DB to 0x0AD0 to match the existing packets. (part of #2324)
  • Added buffer size validation for char_mmo_char_tobuf. (part of #2324)
  • Updated npc/woe-se files to modern standards, including mes() and mesf(). (#2261)
  • Changed HPMDataCheck to exclude packetver-specific packet structs that would cause compile-time errors. (794ce3c)

Fixed

  • Fixed getunits() returning the wrong value if no area size is passed. (41d370c, issue #2330)
  • Fixed support for old (2010 and older) clients in packet ZC_PROPERTY_HOMUN. (part of #2324)
  • Fixed Gaia Sword not granting any bonus drops. This reworks the way s_add_drop differentiates between items and groups and the parameters passed to pc_bonus_item_drop(). Custom code may need to be updated to match. (#2327)
  • Fixed a 'Gungslinger' typo in item_db2. (#2335)
  • Fixed delay-consumed items missing consumption after using Abracadabra/Improvised Song (#2298, issue #1169)

Removed

  • Removed unnecessary typedef from clr_type. The type is now only available as enum clr_type. (part of #2324)

v2018.11.18+1

21 Nov 03:59
97606ea
Compare
Choose a tag to compare

Fixed

  • Fixed a regression in #1215 that prevented characters from being resurrected. (c34871c)

v2018.11.18

19 Nov 02:17
5e37ad2
Compare
Choose a tag to compare

Added

  • Added an option to prevent character renames when in a guild or a party. This is the official behavior, but disabled by default since it's unnecessary in Hercules. To enable, char_configuration/use_aegis_rename can be set to true in char-server.conf. (#1866, issue #1805)
  • Added the script command data_to_string(), to return the string representation of the given data (counterpart to getd()). (#2304)
  • Added/updated packets, encryption keys and message tables for clients up to 2018-11-14. (#2310, #2321)
  • Added a configuration option for the maximum delay allowed by @channel setopt MessageDelay command, see chsys/channel_opt_msg_delay in channels.conf. (#2287)
  • Added a configuration option for more accurate emulation of the HP display on dead characters. This setting is enabled by default, but the old, less confusing, behavior is available by setting display_fake_hp_when_dead to false in client.conf. (#1215, issues #889 and #840)
  • Added common/packets, to provide a common interface to the packet DB, shared by all three servers. (#2321)
  • Added proof of concept of compile time validation of packet struct definition against the packet lengths DB (currently only for ZC_ITEM_PREVIEW). (part of #2321)
  • Added runtime client-server packet length validation in RFIFOSKIP() and WFIFOSET(). An unchecked WFIFOSET2() alternative is still provided, for packets that lack a db entry. (part of #2321)
  • Added runtime validation for the size of WIFOHEAD() buffer allocations. (part of #2321)

Changed

  • Made getunits() stop unnecessarily iterating when the maximum specified amount of units is reached. (#2105)
  • Updated the item bonus documentation, converted to the Markdown format in doc/item_bonus.md. (#2259)
  • Improved the channel delay message to include the remaining time before a new message can be sent. (#2286)
  • Removed the unused type argument from getnpcid(). All the shipped scripts have been updated. (#2289)
  • Improved the charlog to include the stats, class, hair color and style whenever available. This affects the character selection and rename log entries, that had most fields zeroed before. (#2320)
  • Updated the quest variables documentation, converted to the Markdown format in doc/quest_variables.md. (#2256)
  • Updated the monster modes documentation, converted to the Markdown format in doc/mob_db_mode_list.md. (#2255)
  • Documented flag of the status->heal() function through the enum status_heal_flag. (part of #1215)
  • Added packet versions for all server types to the socket datasync validation. (part of #2321)

Fixed

  • Fixed packet ZC_FORMATSTRING_MSG_COLOR for clients older than 20160406. (part of #2310)
  • Fixed the output formatting in the unhandled packet reporter. (part of #2310)
  • Improved grammar in the CONTRIBUTING.md document. (#2303)
  • Fixed some logically dead code in status.c. (#2265)
  • Fixed some alerts reported by LGTM for the python scripts. (#2268)
  • Fixed some typos in the README.md document. (#2283)
  • Fixed a crash and/or mapflag inconsistency when reloading scripts, especially in PK servers. Map zones are now removed correctly during a reload. (#2247, issue #2242)
  • Fixed an overflow in the defense calculation when fighting more than 22 enemies. (#1233, issue #1201)
  • Fixed the gitlab-ci builds with clang-4.0, which was removed from Debian testing/unstable. (#2323)
  • Fixed an issue that caused a character leaving their guild to still receive some #ally messages from certain allied guilds. (#2322)
  • Fixed an issue that caused a character joining a guild not to join its #ally channel group. (part of #2322)
  • Fixed a duplicated line in the @channel help output. (part of #2322)
  • Fixed some code that assumed a character to be already on a map and attempt to leave an invalid #map channel when logging in. (part of #2322)

Removed

  • Removed support for the MINICORE libraries, which were unused but needlessly built since the new mapcache system was implemented in #1552. (#2319)
  • Removed the unused src/tool directory. (part of #2319)

v2018.10.21

22 Oct 14:15
1f7d4f0
Compare
Choose a tag to compare

Added

  • Unknown packets are now printed to the console, when the option to dump them to disk (DUMP_UNKNOWN_PACKET) is disabled. (part of #2226)
  • Added/updated packets, encryption keys and message tables for clients up to 2018-10-02 (#2226)
  • Implemented the script command removespecialeffect(). (part of #2226)
  • Implemented the atcommand @camerainfo and the script commands camerainfo() and changecamera(). (part of #2226)
  • Added options to enforce a minimum buy/sell price for NPC items, defaulting to the official values of 1 and 0, respectively. (#2208, issue #2177)
  • Added documentation for the script command achievement_progress(). (#2249)
  • Added/updated packets, encryption keys and message tables for clients up to 2018-10-17 (#2278)
  • Implemented script command itempreview(). (part of #2278)
  • Added placeholders for 493 items from kRO. (#2280)

Changed

  • Converted the effect list documentation to Markdown (effect_list.md). (#2230, issue #2215)
  • Improved the GitHub pull request and issue templates. (#2237)
  • Allowed getd() to work with constants and params (although this is a discouraged practice). (#2240)
  • Converted the permissions documentation to Markdown (permissions.md). (#2253)
  • Extended getiteminfo() and setitmeinfo() with the trade restriction information (ITEMINFO_TRADE). The ITR_* constants are made available to the script engine, and the global function F_GetTradeRestriction() has been provided, for convenience. (#2172)
  • Converted the global configuration documentation to Markdown (global_configuration.md). (#2229, issue #2216)
  • Removed duplicated code from the showevent() icon validation. (#2250)
  • Extended setquestinfo() with a mercenary class option (QINFO_MERCENARY_CLASS). (#2251)
  • Removed duplicated/diverging code from the @bodystyle command. (#2264)
  • Removed duplicated code for prompt(), now sharing the same function as select(). The new constants MAX_MENU_OPTIONS and MAX_MENU_LENGTH have been provided. (#2279)

Fixed

  • Fixed an assertion failure in the zeny achievement, when the amount of zeny is zero. (#2227)
  • Fixed issues when setting a char or account variable of another player. (#2238, issue #2212)
  • Fixed a failed assertion when a character is invited to and joins a guild. (#2235, issue #2210)
  • Fixed a failed assertion when sc_end() is called for SC_BERSERK. (#2239, issue #1388)
  • Fixed display issues with homunculus in old clients. (#2252)
  • Fixed damage reflection (through Reflect Shield, High Orc Card, etc) to work on traps. The old, unofficial, behavior can be restored through the battle configuration flag trap_reflect. (#2182, issue #1926)
  • Fixed Blast Mine and Claymore Trap damage, that wasn't getting split by the number of targets. (#2182, issue #1900)
  • Fixed an assertion failure when refining an item fails. (#2234, issue #2217)
  • Fixed the gitlab-ci builds with clang-5.0, which was removed from Debian testing/unstable. (58afe04)

v2018.09.23

24 Sep 00:58
852c133
Compare
Choose a tag to compare

Added

  • Added LGTM.com code quality badges to the README. (#2202)
  • Added maps and constants related to episode 17.1 to the map database and constants list. (#2203)
  • Added/updated packets, encryption keys and message tables for clients up to 2018-09-19 (#2199)
  • Added -Wvla to the compiler flags, to prevent accidental usage of variable length arrays. (#2199)
  • Implemented PACKET_CZ_MEMORIALDUNGEON_COMMAND. (#2195)
  • Extended setquestinfo() with support for item amount ranges. (#2218)
  • Implemented the Mob Skill DB generator into the db2sql plugin. (#2149)

Changed

  • Changed the Travis build to use the maximum available PACKETVER, so that the recent code is tested. (#2199)
  • Added a shortand to call mes() without arguments to mean mes(""). (#2193)

Fixed

  • Added a missing IF NOT EXISTS clause in the char_achievements table creation query. (e71e41b)
  • Fixed an issue in packet ZC_INVENTIRY_MOVE_FAILED (#2199, issue #2213)
  • Fixed a validation error in setquestinfo(). (#2218)
  • Fixed an error in the achievement system, when killing a cloned mob. (#2204, issue #2201)
  • Fixed a trucation issue in the card columns of the database. (#2205, issue #2187)
  • Fixed a crash when a character is removed from the char table but not from the guild_member. (#2209, issue #2173)

v2018.08.26+1

30 Aug 03:48
611bda2
Compare
Choose a tag to compare

Fixed

  • Fixed a bug which prevented the script engine from updating params. (#2200, e554c1c)

v2018.08.26

27 Aug 00:30
6038248
Compare
Choose a tag to compare

Added

  • Added the @setzone command, which allows changing the zone of the current map on the fly. (#2162)
  • Added/updated packets, encryption keys, and message tables for clients up to 2018-08-08. (#2176)
  • Added support for sak and ad clients. (#2185)
  • Made the server display the client type (main, RE, zero, sak, ad) on startup. (#2185)
  • Added const-correct wrappers for strchr(), strrchr(), strstr(), when building with C11-compatible compilers. (#2189)

Changed

  • Made the map zone db also reload when @reloadscript is used. (#2162)
  • Updated the is_function script command to support built-in commands, local functions, and local subroutines. (#2154)
  • Updated the debugmes script command to support printf format strings. (#2146)
  • Changed the language specification to C11 in autoconf builds. (#2189)

Deprecated

  • script->add_str() should no longer be used by plugins to inject variables, as script->add_variable() supersedes it. (#2164)

Fixed

  • Fixed the @mapflag command not working with the town mapflag. (#2133, #2162)
  • Fixed some issues with the banking and roulette packets. (#2190)
  • Fixed the compiler throwing a warning when MAGIC_REFLECTION_TYPE is set to 0. (#1920, 2175)
  • Fixed some vague item bonus documentation for bHealPower and bHealPower2. (#2125)
  • Fixed some issues in the GitLab CI CentOS builds that prevented the pipelines from succeeding. (#2191)
  • Reverted [v2018.07.29+1] and fixed the underlying issue, which caused some script variables to end up with an incorrect type. (#2164)
  • Fixed some constants that had an invalid type, which caused undefined behaviour with getdatatype. (#1801, #2164)
  • Fixed zeny spending achievements recording the zeny amount in negative values. (#2171)

v2018.07.29+2

01 Aug 15:23
7f7b806
Compare
Choose a tag to compare

Fixed

  • Fixed a wrong preprocessor directive that prevented some clients from connecting. (#2165, #2166)

v2018.07.29+1

30 Jul 16:47
6696ad9
Compare
Choose a tag to compare

Fixed

  • Added a temporary patch for getd when variable types are C_NOP. (#2163)

v2018.07.29

30 Jul 01:40
f3b156e
Compare
Choose a tag to compare

Added

  • Added support for the Achievements system and the Titles system. (#2067, #2157, #2161)
  • Added a stylist db option to restrict some hairstyles for the Doram race. (#2155)
  • Added/updated packets, encryption keys, and message tables for clients up to 2018-07-18. (#2139, #2126, #2132)
  • Added support for the overweight percentage packet for clients older than 2017-10-25. (#2139)
  • Added support for the chat commands /changedress and /nocosplay. (#2139)
  • Added support for the party member death notification packet for clients older than 2017-05-02. (#2139)
  • Added support for body style to the stylist. (#2138)
  • Added a dead_area_size battle config option to configure the area to which player death packets are sent. (#2088)
  • Added project files for Microsoft Visual Studio 2017 (#2131)

Changed

  • Updated the warp list packet for clients older than 2017-04-19. (#2139)
  • Simplified the questinfo() script command and added setquestinfo(). This may break some scripts, but is easily fixable with a regular expression search/replace. (#2107)
  • The constants database will now also be reloaded when calling @reloadscript. (#2130)
  • The maximum item ID for the item database is now 65535 for clients older than 2018-07-04, and 131072 for newer clients. It may be increased up to a maximum of 2147483648 in the future, as needed. (#2134)
  • Added the missing pos parameter to skill_init_unit_layout_unknown(). (#2143)

Deprecated

  • Microsoft Visual Studio 2012 is no longer officially supported. (#2131)

Removed

  • Removed the EF_ANGEL3 effect from the novice academy, as it is now triggered by the Achievements system. (#2156)

Fixed

  • Fixed a bug which made the Venom Splasher skill consume gemstones twice. (#2148)
  • Fixed a bug that could make skill cooldowns never expire, rendering the skill unusable. (#2147)
  • Fixed the maximum array size being higher than the maximum integer (uint32 vs int32), which could cause integer overflows in scripts. (#2093)
  • Fixed a wrongly named constant, which made Sea-Otter Card not increase the Sushi heal rate. (#2117)
  • Fixed misc bugs related to pet evolution. (#2136, #2153)
  • Fixed a bug that sent an attendance system message without the attendence ui being opened. (#2129)
  • Corrected several outdated documentation references to db/constants.conf, to point to doc/constants.md. (#2090)
  • Fixed an issue in the script command getd() that wouldn't properly initialize the type of newly created variables through set(getd(...), ...) (#2158)
  • Fixed a missing memory initialization in several dummy struct block_list entries created as local variables. (#2159)