Skip to content

Releases: HerculesWS/Hercules

v2019.11.17

18 Nov 02:42
fac2eef
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-11-13. (#2568)
  • Added support for packet CZ_REQ_MOUNTOFF. (part of #2568)
  • Added a missing building entrance portal in Juno and in Lighthalzen. (#2542)
  • Added the script command getguildinfo() and its related constants GUILDINFO_*, to lookup information about a guild. (#2566)
  • Added a separate configuration flag in map_log.enable to control the logging of LOG_TYPE_LOOT. (part of #2560, issue #2414)
  • Added a new log type, LOG_TYPE_ACHIEVEMENT and its configuration flag, to control the logging of achievement-granted items. A database migration is required. (#2560, issue #2414)
  • De-hardcoded the boss monsters' resistance to some status effects. It's now controlled by a new NoBoss flag in sc_config. (#2570)
  • De-hardcoded the combo skills chaining check. It's now controlled by a new IsCombo flag in skill_db. (#2573)
  • De-hardcoded the status icons. They are now defined through a new Icon field in sc_config. (#2577)

Changed

  • Added error details to the python converter tools when a libconfig parsing error is encountered. (part of #2568)
  • Converted packet CZ_LAPINEDDUKDDAK_CLOSE into a struct. (part of #2568)
  • Updated the location of various NPCs: portals in Juno, sign post in Brasilis, Young Man in Payon (pre-renewal). (part of #2542)
  • Reordered the loading of the stylist DB to be before the loading of NPC scripts, for consistence with the other DB files. (#2571)

Fixed

  • Fixed an incorrect nullpo check when slave monsters are summoned by an alchemist. (#2574, issue #2576)
  • Fixed the Steal skill not showing the HP bar of the targeted monster right away but only when leaving and re-entering sight range. (part of #2567)
  • Fixed a regression in the Steal skill that caused it to allow stealing of some cards. Card stealing prevention is now enforced by item type rather than by position in the drop list. (#2567)
  • Fixed the @fakename to display the overridden name regardless of whether the character is disguised. (#2548, issue #2539)
  • Fixed the target_to field not being cleared appropriately, causing monsters to get stuck in a loop walking to their previous target that has died, and causing hunters with auto-attack to be unable to walk away from their target and cancel their attack action. (#2564)
  • Fixed the handling of HULD .po translations that contain the \r escape sequence. (#2569)
  • Fixed the unintended clearing of status changes granted by passive guild skills, via sc_end(SC_ALL). (#2575, issue #1147)

Deprecated

  • Deprecated the script command getguildname(), use getguildinfo(GUILDINFO_NAME, <guild id>) instead. (part of #2566)
  • Deprecated the script command getguildmaster(), use getguildinfo(GUILDINFO_MASTER_NAME, <guild id>) instead. (part of #2566)
  • Deprecated the script command getguildmasterid(), use getguildinfo(GUILDINFO_MASTER_CID, <guild id>) instead. (part of #2566)

Removed

  • Removed the SI_* constants from the source code, now available through constants.conf. (part of #2577)

v2019.10.20

21 Oct 06:39
857650c
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-10-02. (#2537)
  • Added a new config file conf/common/map-index.conf to customize the location of the map_index.txt file. (part of #2547)

Changed

  • Moved several hardcoded messages to messages.conf. (#2152, issue #1282)
  • Updated the @dropall command to correctly show the amount of dropped (and skipped) items. (#2545)
  • Split the HULD generated translations into smaller (and easier to manage) files. A translation will now consist of a folder, with one .po (.pot) file per script. Third party translations may need to be updated to match this change. (#2492)
  • Changed the slave monsters' behavior to react to chase the same target as their master, to match the official behavior. A configuration setting slave_chase_masters_chasetarget has been provided in battle/monster.conf for those that wish to keep using the old custom behavior. (#2561)
  • De-hardcoded the path to the db folder, now using map_configuration.database.db_path and char_configuration.database.db_path in the map and char server respectively. This allows the user to customize the location of the db folder. (#2547)

Fixed

  • Fixed an exploitable issue in the Izlude Arena party mode script. (#2538)
  • Fixed a buffer overflow in the buildin_npcshopdelitem(). (#2540)
  • Fixed a potentially exploitable issue in the Ore Downgrade script. (#1935, issue #1934)
  • Corrected the item bonus for Drooping_Kitty_C. (#2543)
  • Corrected the display of the Sense skill to cap to 0 the negative resistance values instead of underflowing them. (#2544)
  • Fixed compilation warning with gcc-9. (part of #2537)
  • Fixed the HP bar of party members not showing when they unhide. (#2549)
  • Fixed the status change timers not showing the correct values in the client, after relogging. This requires a database migration. (#2551, issue #2018)
  • Corrected Magnum Break's 2 second delay to be an after-cast delay (reducible by Bragi's Poem) instead of a cooldown. (#2553)
  • Fixed an issue that prevented players from closing their own vending shop. (#2555, issue #2554)
  • Fixed the Homunculus skill requirements being applied to the master as well. (#2556)
  • Fixed the Homunculus skill failure message not displaying any required items (part of #2556)
  • Fixed the Chaotic Blessings skill from Vanilmirth never picking the enemy as its random target to heal. (part of #2556)
  • Fixed an issue that caused the saved character data to retain the old party ID after leaving or getting kicked. (#2562)
  • Fixed some possible crashes or memory corruption caused by dangling pointers to guilds in the character data. (part of #2562, related to issue #1266)
  • Fixed the party name not getting removed from all affected characters (clientside) when a party is disbanded. (part of #2562)
  • Fixed a crash in the console command parser when a line consisting only of spaces is executed. (#2563)
  • Fixed the argument string passed to console commands when the input starts with multiple adjacent spaces. (part of #2563)
  • Fixed the mapindex value not getting updated in the gm:info console command. (part of #2563)
  • Fixed an issue that caused aggressive monsters with ranged attack to be unable to attack from above a cliff. (#2550)

Removed

  • Removed the legacy, unused, castle_defense_rate option from battle/guild.conf. (#2552)

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)