Skip to content

Releases: HerculesWS/Hercules

v2019.09.22

23 Sep 06:58
d026e28
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-09-18. (#2528)
  • Added the @changecharsex command, to change a character's sex. (part of #2528)
  • Added support for clan names in the name packets. (part of #2528)
  • Added support for multiple Token of Siegfried item IDs. (#2515)
  • Added support for the new guild UI features in the client. (#2519)
  • Added per-item scriptable start/end rental functions, replacing the previous hardcoded functionality. See the new item DB fields OnRentalStartScript and OnRentalEndScript. (#2462, issue #140)
  • Added the getfont() script command, to check the player's current chat font. (part of #2462)
  • Added support for gcc-9 by disabling the array bound checks until the ZEROED_BLOCK related code will be fully compatible (#2536)
  • Implemented the LapineDdukDdak System. (#2336)
  • Implemented the Library Mistake Quest, allowing players to bypass the rebirth costs. (#2532)

Changed

  • Converted sc_config to libconfig. A tool to convert from the old format has been provided in tools/scconfigconverter.py. (#2526)
  • Converted packet ZC_TALKBOX_CHATCONTENTS into a struct. (part of #2528)
  • Extracted homunculus experience gain message code to a separate function. (part of #2528)
  • Changed function arguments to type enum battle_dmg_type where applicable. (part of #2528)
  • Changed pets, homunculi, etc. not to be loaded when autotrading. (part of #2524)
  • Changed the guild castle IDs order to match the client's. (#part of #2519)
  • Converted the item combo DB to libconfig. A tool to convert from the old format has been provided in tools/itemcombodbconverter.py. (#2529)
  • Changed some remaining symbols to static. (part of #2536)
  • Updated the gitlab-ci builds to reflect the release of Debian 10 buster. Gcc-8 is now the primary compiler used for the gcov, asan and i386 builds. (part of #2536)
  • Increased the maximum allowed item ID to int32 max, for clients supporting it. (part of #2336)

Fixed

  • Fixed packet ZC_ACK_RANKING on old (2013 and earlier) clients. (part of #2528)
  • Fixed an issue preventing homunculus auto-vaporize on death or skill reset, when the 80% HP condition isn't met. (#2524)
  • Fixed a bug that caused homunculi's HP and SP to be refilled on every login instead of just on creation. (part of #2524)
  • Fixed the intimacy requirement check for the homunculus ultimate skills. (part of #2524)
  • Fixed the MVP tombstones causing players to get stuck if they were reading their message when the MVP respawns. (#2525)
  • Fixed the MVP tombstones showing their message multiple times when clicked. (part of #2525)
  • Fixed some incorrect examples of use of while (select(...)) in the script documentation. (#2533)
  • Corrected the item ID used by the KVM Logistic Officer. (#2527, issue #2404)
  • Fixed several subtle issues caused by the nick partial match feature, when enabled. Now the partial match is only performed for lookups requested by atcommands and client features, while a full match is used for source and script lookups. (#2523)
  • Rewritten the itemdb_searchname_array function, now properly supporting the items with IDs greater than 65535. (#2535)
  • Fixed support for items with IDs greater than 65535 in the constdb2doc plugin. (part of #2535)
  • Fixed a minor C standard compliance error, mixing function pointers and non-function pointers. (part of #2536)
  • Fixed the (commented out by default) custom Venom Splasher countdown timer code. (part of #2536)

v2019.08.25

26 Aug 06:04
307248a
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-08-21. (#2517)
  • Added icons for the elemental resistance status changes (SC_ARMORPROPERTY). (#2516)
  • Added Visual Studio 2019 solution. (#2520)
  • Added new NPC ID constants. (#2521)

Changed

  • Converted various packets (ZC_ADD_SKILL, ZC_SKILLINFO_LIST, ZC_SKILLINFO_UPDATE2) into structs and added a new version for ZC_NPC_MARKET_PURCHASE_RESULT. (part of #2517)
  • Added missing sanity checks into many clif functions. (#2501)
  • Extended the getequiprefinerycnt() command to accept multiple equipment slots at the same time, returning the total refine of them. (#2512)
  • Added the path (relative to the Hercules root) to various database reading status messages. (#2513)
  • Extended setiteminfo() and getiteminfo() with additional options: ITEMINFO_ELV_MAX, ITEMINFO_DELAY, ITEMINFO_DROPEFFECT_MODE, ITEMINFO_CLASS_*, ITEMINFO_FLAG_*, ITEMINFO_STACK_*, ITEMINFO_ITEM_USAGE_*, ITEMINFO_GM_LV_TRADE_OVERRIDE. (#2518)

Fixed

  • Fixed packets ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN and ZC_MAKINGITEM_LIST. (part of #2517)
  • Fixed an overflow in the auto bonus processing function, that made it unable to handle costume/shadow gears. (#2514, issues #1355, #1190, #2451)

Removed

  • Removed Visual Studio 2013 solution. (part of #2520)
  • Removed round-trips to the inter-server for packets related to whisper messages, reports to GMs, GM broadcasts, party, guild and main chat, previously needed for, now unsupported, multi-zone setups. (#2522)

v2019.07.28

28 Jul 23:53
0edf236
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-07-24. (#2498)
  • Added a setting to have @autoloot take player drop penalties/bonuses into account. See autoloot_adjust in drops.conf for details. (#2505)
  • Added a mob DB field DamageTakenRate to change the rate of the damage received by each monster. (#2510)
  • Added a setting to allow homunculi to obtain a portion of the EXP gained by their master. See hom_bonus_exp_from_master in homunc.conf. Note: in order to restore the previous behavior, the setting can be changed to 0. (#2507, issue #2313)

Changed

  • Converted various packets (ZC_ACK_RANKING, ZC_STATUS_CHANGE_ACK, ZC_HAT_EFFECT) into structs. (part of #2498)
  • Changed pc_statusup() to send the actual stat value back to the client in case of error. (part of #2498)
  • Disabled the @refresh and @refreshall commands during NPC conversations, causing the character to be stuck on an invisible NPC dialog until relogging. (#2499)
  • Extended @reloadmobdb to update the currently spawned monsters. (#2500)
  • Changed the party sharing checks to avoid unnecessary SQL queries. (part of #2502)
  • Extended the @refine command with shortcuts to refine every normal equipment (-1), every costume equipment (-2) or every shadow equipment (-3). (#2504)
  • Extended the @refine command to list the costume and shadow equipments. (#part of #2504)
  • Increased the stack limit of Turisus, Asir and Pertz to unlimited and the other runestones to 60. (#2509)
  • Extended the commands getmonsterinfo() and setunitdata() / getunitdata() with accessors for the new DamageTakenRate mob DB field, using, respectively, MOB_DMG_TAKEN_RATE and UDT_DAMAGE_TAKEN_RATE. (part of #2510)
  • Converted the Guild Castle database to the libconfig format, in preparation for future updates. (#2506)

Fixed

  • Sanitized the use of input() in all the scripts to work correctly if the minimum accepted value is changed to less than zero in the configuration. It's recommended that third party scripts get updated not to assume a positive value, since the default setting may change in the future. (#2494)
  • Fixed an issue in the Sealed Shrine script, allowing to unseal multiple Baphomets under certain conditions. (#2332)
  • Fixed an issue that allowed an appropriately created party to enable experience sharing even if outside the sharing range. (#2502)
  • Corrected the cooldown after killing Wounded Morroc. (#2503)
  • Corrected isequipped() and isequippedcnt() to correctly handle costume equipment. (#2508)

v2019.06.30

01 Jul 00:25
a5eb6ec
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-06-05. (#2491)
  • Added support for the new shortcuts packets in the Zero clients. (part of #2491)
  • Added support for the Summoner class in stylist.txt. (part of #2357, issue #2356)
  • Implemented the new setfavoriteitemidx() and autofavoriteitem() script commands. (#2427)
  • Implemented the new @reloadnpc atcommand, to reload a single script file. (#2476)
  • Implemented the new identify() and identifyidx() script commands and @identifyall atcommand. (#2487)

Changed

  • Suppressed unnecessary ShowWarning messages related to the nosave, adjust_unit_duration and adjust_skill_damage mapflags when using @reloadscript. (#2410, issue #2347)
  • Updated the Rune Knight, Guillotine Cross and Ranger shops with missing items. (#2343)

Fixed

  • Fixed monster spawns disregarding the custom names specified. (#2496, #2491, issue #2495)
  • Fixed the style range in stylist.txt, now starting from 1 instead of 0. (part of #2357, issue #2356)

v2019.06.02

03 Jun 00:10
bd4c289
Compare
Choose a tag to compare

Added

  • Added Stat Reduction Potions to the Renewal item DB. (#2483)
  • Added the constant MAX_NPC_PER_MAP to the script engine. (part of #2474)
  • Added the cap_value() script command, to cap a value between a minimum and maximum. (#2472)
  • Added the mesclear() script command, to clean an NPC message dialog without user interaction. (#2471)
  • Added a script for simplified installation on Windows development machines. (#2222)
  • Added/updated packets, encryption keys and message tables for clients up to 2019-05-30. (#2468, #2490)
  • Added support for multiple hotkeys sets (two 'tabs' on the RE clients). The constant MAX_HOTKEYS_DB represents the maximum amount of hotkeys saved to the database. This requires a database migration. (part of #2468)
  • Added the delitemidx() script command, to delete an item by its inventory index. (#2394)
  • Added the getguildonline() script command, to return the amount of online guild members. (#2290)
  • Added the nostorage and nogstorage mapflags, disallowing storage usage on the affected maps. The bypass_nostorage permission is also provided, to bypass those mapflags. (#2221)

Changed

  • Moved the questinfo data from map to npc data, allowing the use of multiple questinfo() blocks. (#2433, issue #2431)
  • Removed code duplication from the map data cleanup functions. (part of #2433)
  • Allow to read negative values from input(). The minimum value is still set to 0 in the default configuration, but it can be overridden globally by editing input_min_value or locally by specifying the min and max arguments to input(). (#2375)
  • Extended the getmapinfo() command to return the total number of NPCs in a map (MAPINFO_NPC_COUNT). (#2474)
  • Updated the pre-renewal Byorgue summon slave delay to match the official value, increased before renewal to prevent farming exploits. (#2456)
  • Changed the "all" special value used by killmonster() to be lowercase and case sensitive, for consistency with other script commands. (#2380)
  • Updated and simplified the Windows installation instructions. (part of #2222)
  • Updated some NPC/name translations to match the official ones or the official intent. Cougar -> Kuuga Gai, Gaebolg -> Geoborg, Family -> Clan, Magic Gear -> Mado Gear (#2457)
  • Updated the Mado Gear rental NPC to sell Mado Gear Box and Cooling Device. (part of #2457)
  • Changed the expandinventoryack(), expandinventoryresult(), expandinventory() and getinventorysize() script commands to be lowercase, for consistency. (#2374)

Fixed

  • Fixed the failedremovecards() command, to only remove the carts when type is set to 1, as described in its documentation. (#2477, issue #2469)
  • Fixed a crash when using npcspeed(), npcwalkto(), npcstop(), unitwalk(), unitwarp(), unitstop() on a floating NPC without a sprite. (#2430)
  • Fixed a stats calculation regression. (#2482)
  • Fixed a version check for the ZC_PING packet. (part of #2468)
  • Fixed errors caused by missing Option DB and Option Drop Groups DB data when the map server loads the mob database in minimal mode. (#2486, related to issue #2484)

Deprecated

  • Deprecated use of "All" with killmonster(). Use "all" instead. (part of #2380)
  • Deprecated the mixed case version of the expandInventoryAck(), expandInventoryResult(), expandInventory() and getInventorySize() script commands. Use the lowercase variants instead. (part of #2374)

v2019.05.05+4

22 May 22:34
2fb175d
Compare
Choose a tag to compare

Fixed

  • Fixed a reading error in refine database caused refine chances to be incorrectly read. (#2481)

v2019.05.05+3

09 May 00:16
647a3d2
Compare
Choose a tag to compare

Fixed

  • Fixed a calculation error in the ASPD (and/or other substats) when the maximum stats have values higher than default. (#2419)
  • Fixed a parsing error in the HPM Hooks Generator. (#2467)

v2019.05.05+2

07 May 23:01
f5a695e
Compare
Choose a tag to compare

Fixed

  • Fixed a packet generation issue that caused the Guild Storage to appear empty. (#2464, issue #2463)
  • Fixed use of ZC_SE_PC_BUY_CASHITEM_RESULT on old packet versions that didn't support it. (#2465)

v2019.05.05+1

07 May 00:28
4f6bde3
Compare
Choose a tag to compare

Fixed

  • Fixed an issue in the player name packet causing names not to be sent correctly. (#2460, issue #2459)
  • Fixed a null pointer error on MVP drops. (#2461)

v2019.05.05

06 May 02:31
e7d0f06
Compare
Choose a tag to compare

Added

  • Added consolemes() script function which allow the script engine to print error, warning, status, debug and info messages to the console. (part of #2440)
  • Added the item combo effect for Geffenia Tomb of Water (2161) and La'cryma Stick (1646). (#2441, issue #1982)
  • Added support for mobs to drop items with Random Options. See the new database file db/option_drop_group.conf and the new optional syntax in the drop entries of mob_db.conf. (#2309)
  • Added a global function F_MesItemInfo(), to print an item name with description link, formatted for the current client version. (#2068)
  • Added/updated packets, encryption keys and message tables for clients up to 2019-05-02. (#2432)
  • Added a new function clif_selforarea() to send packets to self, falling back to area when no target is specified. (part of #2432)
  • Added script commands getunittitle() and setunittitle(), and the related information in the unit_data structure. (part of #2432)
  • Added support for players to automatically reject party invites through the party options. (part of #2432)
  • Added an option to automatically drop the connection on the server side when a character is kicked. See drop_connection_on_quit in client.conf (note: the previous behavior was equivalent to true). (part of #2432)
  • Added an option to force character save when the party options are changed. See save_settings in map-server.conf. (part of #2432)
  • Added the script command closeroulette() and the related packet ZC_ACK_CLOSE_ROULETTE to close the roulette window. (part of #2432)
  • Added a missing CSBR_BUSY value to enum CASH_SHOP_BUY_RESULT. (part of #2432)
  • Added support for the refinery UI. See the new refine_db.conf changes and the settings enable_refinery_ui and replace_refine_npcs in features.conf to toggle between the new UI and the previous scripted refiner. (#2446)
  • Added a new SkillInfo flag HiddenTrap, to make certain traps invisible, according to the trap_options configuration flag. The default settings have changed to match Renewal. Pre-renewal users might want to review trap_options and the now superseded traps_setting. (#2232, issues #1927 and #1928)

Changed

  • Extended @dropall to accept an optional argument for item type (#2439).
  • Updated copyright header in the configuration files for year 2019. (part of #2452)
  • Extended the getinventorylist() script command to return an array @inventorylist_favorite, set to true when the item is located in the favorite tab. (#2426)
  • Split the function clif_blname_ack() into bl type-specific functions. (part of #2432)
  • Extended getunitdata() and setunitdata() with support for the group ID (UDT_GROUP), and added the related information in the unit_data structure. (part of #2432)
  • Moved the UDT_* constants from constants.conf to script.c. (part of #2432)
  • Extended the guild expulsion information to include the character ID for supported client versions. This includes a database migration. (part of #2432)
  • Disabled packet validation in socket_datasync(). (part of #2432)
  • Moved the refine database and refine related functions to a new refine.c file. A public and private interface is provided, with public database accessors refine->get_bonus() and refine->get_randombonus_max(). (part of #2446)
  • Changed several battle calculation limits to be configurable through battle/limits.conf and no longer hardcoded. Several status_data fields and battle functions now use int instead of short to accommodate this change. (#2419)
  • Changed the unitwarp() script command to allow NPCs to be relocated to non-walkable cells (like movenpc()). (#2453)

Fixed

  • Corrected MSVC version naming in console (#2450).
  • Corrected an example using a sprite number instead of a constant in README.md. (#2449)
  • Fixed an issue in a monster death label callback in npc/custom/events/mushroom_event.txt when the monster is killed without an attached player. (#2442, issue #1955)
  • Fixed an issue where when a chat room handler leaves, the following leader won't be checked for cell_chknochat and will bypass it. (#2443, issue #1569)
  • Corrected the documentation for pincode.enabled in the char-server configuration. (part of #2452)
  • Fixed an incorrectly displayed ITEMLINK entry in the OldGlastHeim script. (part of #2068)
  • Fixed a packet size underflow in the storage packet for certain client versions. (#2424)
  • Fixed an issue that caused named/brewed/forged items to be saved to database with the wrong character ID. Database migrations are provided, to update the existing data. (#2425, issue #2409)
  • Fixed a truncated title in the inventory window. (part of #2432)
  • Fixed a possible overflow in the guild member login field (only supporting timestamps until 2036-12-31). (part of #2432)
  • Fixed a compile error with old packet versions. (part of #2432, issue #2438)
  • Fixed a potential exploit related to the vending skill, by adding stricter validation on the vending status flags. (part of #2432)
  • Fixed a regression, restoring the ability for HPM Hooks to hook into private interfaces, through the new macros addHookPrePriv() and addHookPostPriv(). (#2447)
  • Fixed a zeny loss caused by the inter-server deleting zeny from messages when the user only requests to take items. (#2455)
  • Fixed a compatibility issue with Perl 5.26 in the item converter script. (#2444)
  • Fixed various gitlab-ci build failures, by removing some no longer supported debian versions and packages. The gcc-4.6, gcc-4.7 and gcc-5 builds have been removed. (#2458)

Deprecated

  • Deprecated the script command debugmes(), superseded by consolemes(). (part of #2440)

Removed

  • Removed the superseded traps_setting configuration flag, replaced by trap_options. (part of #2232)