Skip to content

Releases: HerculesWS/Hercules

v2020.05.03

04 May 14:01
ec0584a
Compare
Choose a tag to compare

Added

  • Added the new pets (including the jRO exclusive ones) and their related items/monsters to the renewal database. (#2689)
  • Added constants ALL_MOBS_NONBOSS, ALL_MOBS_BOSS, ALL_MOBS for the special mob IDs for global skill assignment in the mob skill database. (part of #2691)
  • Added support for __func__ on Windows, since it's now available in every supported compiler. (part of #2691)
  • Added documentation for the mob skill database. See doc/mob_skill_db.conf. (#2680)
  • Added missing functions for the name ack packets for BL_ITEM and BL_SKILL. (part of #2695)
  • Added/updated packets and encryption keys for clients up to 2020-04-14. (#2695)
  • Added support for packets ZC_LAPINEUPGRADE_OPEN, CZ_LAPINEUPGRADE_CLOSE and ZC_LAPINEUPGRADE_RESULT and a placeholder for CZ_LAPINEUPGRADE_MAKE_ITEM. (part of #2695)
  • Added a new cell type cell_noskill, to block skill usage. (#2188)

Changed

  • Removed warning messages about missing elements in the mob db, since it's an optional field. (part of #2689)
  • Updated the renewal pet database with the correct values and bonuses. (part of #2689, issue #2435)
  • Changed mob_getfriendstatus() to consider character as friends of their support monsters, for consistency with mob_getfriendhprate(). (part of #2691)
  • Changed MSC_AFTERSKILL to trigger on any skill when its ConditionData is 0, for consistency with MSC_SKILLUSED. (part of #2691)
  • Improved data validation and error reporting in the mob skill database. (part of #2691)
  • Changed return values of mob_skill_use() and mobskill_event(). Any third party code that uses them needs to be updated. (part of #2691)
  • Changed the battle configuration flag manner_system to be applied immediately to any existing SC_NOCHAT. (#2696, issue #227)
  • Changed the atcommand() command to ignore PCBLOCK_COMMANDS. (#2062)

Fixed

  • Fixed SC_AUTOTRADE, SC_KSPROTECTED and SC_NO_SWITCH_EQUIP incorrectly recognized as unknown status changes. (#2686, issue #2684)
  • Prevented SC_KSPROTECTED from starting on dead monsters. (part of #2686)
  • Fixed character unhiding while disguised or when using @option 0. (#2687, issues #1556 and #2104)
  • Fixed an incorrect order of operations causing results too small in various calculations related to free cell search, mob skill chances/delays, exp penalty, pet hunger and friendly rates, cast duration. (#2690)
  • Fixed errors caused by pet_ai_sub_hard() called for monsters that haven't been added to a map yet. (#2693)
  • Fixed a wrong packet error displayed when using an incorrect password for the char-login connection. (part of #2695)
  • Fixed a security check in the lapine ack packet handler. (part of #2695)
  • Fixed some incorrect assumptions about the skill index values, causing the Bard/Dancer soul link to grant the wrong skills. (#2710, issue #2670)
  • Fixed some conditions that could cause a skill to be attempted to save to the database with a negative skill level, resulting in query errors and data loss. (part of #2710)
  • Fixed the skill type of RK_DRAGONBREATH and RK_DRAGONBREATH_WATER to be BF_WEAPON and support the bLongAtkRate bonus. (#1304)
  • Fixed SC_TELEKINESIS_INTENSE to add percent MATK instead of fixed MATK. (part of #1304)

v2020.04.05+1

07 Apr 22:09
f40cc83
Compare
Choose a tag to compare

Fixed

  • Fixed a regression that prevented pets from hatching. (#2685, issue #2683)

v2020.04.05

06 Apr 04:03
d3d1927
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2020-04-01. (#2663)
  • The setpcblock() and checkpcblock() can now be used on another character by passing the account id. (#2668)
  • Added new StatusChange types (SC_POPECOOKIE, SC_VITALIZE_POTION, SC_SKF_MATK, SC_SKF_ATK, SC_SKF_ASPD, SC_SKF_CAST, SC_ALMIGHTY) and updated relevant items. (#2658, related to #1177)
  • Added libbacktrace support (currently Linux-only) for better error call stack logging. (#2581)

Changed

  • Extended the atcommand @fakename with a new options parameter, to select which names will be displayed. (#2637, related to issue #1966 and #2168)
  • Refactored the pet system code. (#2600, issues #2434 and #303)
    • Added enumerations for pet hunger/intimacy levels
    • Added value capping to pet_set_intimate() function.
    • Adjusted pet catch rate calculation. The old, custom, calculation can be restored by setting the pet_catch_rate_official_formula battle config flag to false.
    • Adjusted pet intimacy calculation when feeding.
    • Improved validation of the Pet DB fields and of the input of various pet related functions.
    • Removed the redundant SpriteName field from pet DB.
    • Changed EggItem field in pet DB to be mandatory.
    • Added new field HungerDecrement to pet DB. This replaces the pet_hungry_friendly_decrease battle config setting.
    • Added new field Intimacy.StarvingDelay to pet DB.
    • Added new field Intimacy.StarvingDecrement to pet DB.
    • Increased MAX_MOB_DB to 22000.
    • Added pet DB documentation file. (doc/pet_db.txt)
    • Removed fields from pet DB where default values can be used.
    • Added intimacy validation to pet DB EquipScript fields. This replaces the pet_equip_min_friendly battle config setting.
    • Adjusted inter_pet_tosql() and inter_pet_fromsql() functions to use prepared statements.
    • Refactored and/or updated code style of various functions that were touched by this pull request.
  • Added a backtrace to the error message of clif_unknownname_ack(). (part of #2663)
  • Added a UNIQUE constraint to the userid column of the login SQL table to prevent having multiple accounts with the same name. (#2666, related to #2169)
  • Increased the column size of listfor the ipbanlist SQL table to accomodate for non-wildcard IPv4 and for IPv6 compatiblity. (#2665, issue #2631)

Fixed

  • Fixed memory violations and incorrect handling of npc_data in the quest info code. (#2682)
  • Fixed an issue that prevented the fake name to show up when using @fakename in RE clients. (part of #2637)
  • Fixed a compiler error in PACKET_ZC_SE_CASHSHOP_OPEN. (part of #2663, issue #2669)
  • Added missing libraries into the plugins Makefile, causing a linking error when a plugin uses MySQL or other libraries. (part of #2663)
  • Fixed a bug causing failed assertions that appeared when attacking a skill unit (such as Ice Wall). (#2678)
  • Fixed a bug causing failed assertions in timer_do_delete(), related to ud->walktimer. (#2676)
  • Fixed a bug allowing to equip bullets and grenades regardless of the weapon type. (#2660, issue #2661, related to #2579)
  • Fixed a memory leak in barter NPCs. (#2655)
  • Fixed a pointer overflow in the script command getiteminfo(). (#2656)
  • Refactored and fixed several bugs in the skill auto-cast system. (#2657, issue #1211)

Removed

  • Removed the pet_hungry_friendly_decrease battle config setting, superseded by the HungerDecrement field of the Pet DB. (part of #2600)
  • Removed the pet_equip_min_friendly battle config setting, superseded by the code inside the Pet DB EquipScript fields. (part of #2600)
  • Removed the redundant SpriteName field from pet DB. (part of #2600)

v2020.03.08+2

21 Mar 13:59
dd7f653
Compare
Choose a tag to compare

Fixed

  • Fixed an incorrect return value in unit->walktobl() causing mobs to get stuck when they try to loot. (#2664)

v2020.03.08+1

14 Mar 18:17
ed5d2d7
Compare
Choose a tag to compare

Fixed

  • Fixed an incorrect return value in unit->walktobl() causing mobs to be unable to walk to their target. (#2659)

v2020.03.08 [DO NOT USE]

09 Mar 11:49
2764e41
Compare
Choose a tag to compare
Pre-release

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2020-03-04. (#2645)
  • Exposed the item bound type (IBT_*) constants to the script engine. (#2650)
  • Added item scripts for item IDs 12459 through 12465 and corrected their name in the pre-renewal DB. (#2634, issue #1196)
  • Added the unitiswalking() script command, to check whether an unit is walking at a given time. (#2628)

Changed

  • Changed the default PACKETVER to 2019-05-30. (part of #2645)
  • Major 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. (#2546)
    • A new header unitdefines.h has been added.
    • enum unit_dir is now provided, to standardize handling of facing/walking directions.
    • The macros unit_get_opposite_dir(), unit_is_diagonal_dir(), unit_is_dir_or_opposite(), unit_get_ccw90_dir(), unit_get_rnd_diagonal_dir() have been added.
    • unit->walktoxy_timer() has been renamed to unit->walk_toxy_timer() and its return values have been changed and documented.
    • unit->walktoxy_sub() has been renamed to unit->walk_toxy_sub() and its return values have been changed and documented.
    • unit->delay_walktoxy_timer() has been renamed to unit->delay_walk_toxy_timer() and its return values have been changed and documented.
    • unit->walktoxy() has been renamed to unit->walk_toxy() and its return values have been changed and documented.
    • unit->walktobl_sub() has been renamed to unit->walk_tobl_timer() and its return values have been changed and documented.
    • unit->setdir() has been renamed to unit->set_dir() and its return value and arguments have been changed and documented.
    • unit->getdir() has been renamed to unit->get_dir() and its return type and constness of the arguments have been changed.
    • unit->warpto_master() has been added.
    • unit->sleep_timer() has been renamed to unit->sleeptimer() and its return values have been changed and documented.
    • unit->calc_pos() now accepts enum unit_dir.
    • map->check_dir() now accepts enum unit_dir.
    • map->calc_dir() now returns enum unit_dir and accepts a const bl.
    • npc->create_npc() now accepts enum unit_dir.
    • skill->blown() now accepts enum unit_dir.
    • skill->brandishspear_first() now accepts enum unit_dir.
    • skill->brandishspear_dir() now accepts enum unit_dir.
    • skill->attack_blow_unknown() now accepts enum unit_dir.
    • The remaining unit functions have been documented.
  • New return values have been added to pc->setpos(), for better error handling. (#2633, issue #2632)
  • Increased the MAX_MOB_LIST_PER_MAP value to 115 in pre-renewal builds, to fit all the default spawns. (#2638, issue #1915)
  • Extended the getiteminfo() command to also accept item names, and added the types ITEMINFO_ID, ITEMINFO_AEGISNAME, ITEMINFO_NAME. (#2639)
  • Changed itemskill() to ignore conditions by default. The ISF_CHECKCONDITIONS needs to be explicitly passed if conditions should be checked/consumed. (part of #2648)
  • Changed the NPC shop behavior to prevent selling items from the favorites tab of the inventory. (#2651)
  • Updated Doxygen configuration to speed up generation and fix compatibility warnings. (0d74789)
  • Updated the Travis-CI configuration file according to the validation warnings and notices. (eb97973)

Fixed

  • Fixed a missing get_index() call in Skill2SCTable, causing some skills to activate the wrong status. (#2643, issue #2636)
  • Fixed a compilation error C2233 in Visual Studio. (part of #2645)
  • Fixed Basilica unintentionally restraining boss mobs. (#2612, issue #1276, related to issue #2420)
  • Fixed the handling of unequip scripts in zones where an item is restricted. The OnUnequip script is now never executed when unequipping in a restricted zone, but it is always executed when entering such zones, regardless of the unequip_restricted_equipment battle flag. (#2642, issue #2180)
  • Fixed the handling of skill requirements and conditions by the itemskill() command. (#2648, issue #2646)
  • Added missing requirements to CASH_INCAGI and RK_CRUSHSTRIKE. (part of #2648)

Removed

  • Removed the ISF_IGNORECONDITIONS flag previously used by itemskill(), now the default behavior. (#2648)

v2020.02.09

10 Feb 07:59
9106bba
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2020-02-06. (#2625)
  • Added support for the expanded barter shop, see example script in npc/custom/expandedbartershop.txt and the related script commands sellitem(), startsellitem(), sellitemcurrency(), endsellitem(). Note: this includes a database migration. (part of #2625)
  • Added the new script commands cloakonnpc() and cloakoffnpc(). (part of #2615)
  • Added the new script command achievement_iscompleted() to check for achievement completion. (part of #2615)
  • Added Exploration Achievement NPCs. (#2615)
  • Added support for an OnNPCUnload label, where a script can perform its cleanup before being unloaded (such as removing mapflags, etc). (part of #2590)
  • Added the Rebellion jobchange quest and its related mobs and items. (#2621)
  • Added support for switching madogear type. See the documentation for setmount() and the related MADO_ROBOT and MADO_SUITE constants. (#2586)

Changed

  • Changed the logic of skill_get_index to make it easier to add new skills, custom or official. (#2596)
  • Refactored int_party code related to exp sharing calculations. (part of #2601)
  • Updated the Duel system cooldown to be configurable with seconds granularity. The duel_time_interval setting can be safely updated and with @reloadbattleconf, applying to any existing cooldowns. (#1495)
  • Converted PACKET_ZC_STATE_CHANGE to use its struct format and added a function to send it to a single target. (part of #2615)
  • Changed the behavior of @unloadnpc, @reloadnpc, @unloadnpcfile to kill the monsters that were spawned by the unloaded script (non-permanent spawns). (#2590, issue #2530)
  • Updated the mobdbconverter.py tool to support Race, Size and Element constants. The script now requires Python 3. (#2620)
  • Cleaned up a duplicate definition of SP_VARCASTRATE in pc_readparam(). (#2624, issue #1311)
  • Extended itemskill() with a new ISF_INSTANTCAST flag to be able to cast a skill without cast time. (part of #2616)
  • Extended itemskill() with a new ISF_CASTONSELF flag to be able to forcefully cast a skill on the invoking character. (part of #2616)
  • Converted ZC_AUTORUN_SKILL to use its struct format. (part of #2616)

Fixed

  • Fixed some signed/unsigned mismatch compiler warnings. (#2601, issue #1434)
  • Fixed some cases where the family exp sharing state wasn't correctly detected. (part of #2601)
  • Fixed a duplicate "Skill Failed" message when using Asura Strike. (part of #2248, issue #1239)
  • Fixed an issue that made a character turn to face its target after casting Asura Strike. (#2248, issue #1239)
  • Fixed the position of a character after a failed Asura Strike cast, to be 3 cells from its original position instead of 2. (part of #2248, issue #1239)
  • Fixed the status icon from the Elemental Resistance Potions and the Undead Element Scroll not disappearing when the status changes end. (#2614, issue #2593)
  • Fixed a crash when using @loadnpc, @reloadnpc or @unloadnpcfile on a directory. (part of #2590, issue #1279)
  • Fixed PR_STRECOVERY to only cure status effects if the target's element isn't Undead. (#2618, issue #2558)
  • Fixed the mobs spawned by mob_clone_spawn() (clone(), @evilclone) being invulnerable because of an uninitialized dmg_taken_rate taking the value of 0. (#2617, issue #2607)
  • Fixed a crash when the script function getunits() was called with an invalid mapindex. Now an error message is added when the mapindex validation fails. (#2619)
  • Fixed a crash when map_forcountinmap() was called with an invalid mapindex. Now the function will return 0 instead. (part of #2619)
  • Fixed clientside errors when using a ViewData block in the mob database without specifying a HairStyleId. The hair style will now default to 1 when a ViewData block is specified. (#2622)
  • Fixed the damage calculation being too low when using weapons of type W_RIFLE (in pre-renewal). (#2623)
  • Fixed an issue that could cause homunculi to be in an unexpected partially-vaporized state (i.e. when a Vanilmirth kills its own master through HVAN_EXPLOSION). (#2626)
  • Fixed NPC ID validation when SECURE_NPCTIMEOUT is defined, causing scripts to abort with an "Unknown NPC" error on the console. (#2627, issue #2073)
  • Fixed the skill condition checks and the flag parameter of itemskill(). The constants ISF_NONE and ISF_IGNORECONDITIONS are now available. (part of #2616)
  • Fixed the itemskill() items to provide their proper Aegis behavior, in their requirement checks, self-targeting and item consumption. (#2616, issue #819)
  • Fixed the Earth Spike Scroll to consume 10 SP when SC_EARTHSCROLL is active. (part of #2616)
  • Fixed warnings in the HPMHookGenerator. (1000b10)

v2020.01.12

13 Jan 07:44
c037226
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2020-01-08. (#2599)
  • Added support for auto exp insurance items. (#2603)
  • Added the script commands resetfeel() and resethate(). (#2285)
  • Added the atcommand @hatereset. (part of #2285)

Changed

  • Extracted packet ZC_SE_CASHSHOP_OPEN to a separate function. (part of #2599)
  • Renamed the functions clif_parse_CashShop* into clif_parse_cashShop*. (part of #2599)
  • Converted clif_partytickack() to use the struct version of packet ZC_PARTY_CONFIG. (part of #2599)
  • Extended setpcblock() with a new PCBLOCK_NPC functionality to prevent players interacting with NPCs (e.g. During some npctalk dialogue). (#2606)
  • Extended warpparty() and warpguild() with an option to disregard the nowarp and nowarpto mapflags. (#2604, issue #1861)
  • Updated copyright header for year 2020.

Fixed

  • Fixed reading water level from RSW version 2.2 and newer. (part of #2599)
  • Fixed pc_have_item_chain() to retrieve the chain ID from the chain cache. (part of #2603)
  • Fixed an overflow in a zeny check condition in RODEX, causing code to never be executed. (#2266)
  • Fixed a re-definition of HPM related symbols in plugins with multiple compilation units. (#2608)

v2019.12.15

16 Dec 00:47
bf99547
Compare
Choose a tag to compare

Added

  • Added/updated packets, encryption keys and message tables for clients up to 2019-12-11. (#2585)
  • Added new version of packet ZC_NOTIFY_EFFECT3. (part of #2583)
  • Added script function specialeffectnum(). (part of #2583)

Changed

  • Reduced the IP ban column length to 13 characters, matching the length of the inserted data. A database migration is required. (#2583, issue #2349)
  • Converted packet CZ_SE_CASHSHOP_OPEN into a struct. (part of #2583)
  • Replaced the old MySQL Connector with MariaDB C Connector 3.1.5 / Client Lib 10.4.3, for the Windows VS builds. (#2580)
  • Moved the functionalities of mob_avail.txt to the mob database, expanding it with more fields (see the mob_db documentation for details). (#2572)

Fixed

  • Fixed incompatibilities with MySQL 8. (part of #2580)
  • Fixed errors when guild_skill_relog_delay is set to 1 (reset on relog). (#2592, issue #2591)
  • Fixed Tarot Card equipment breaking behavior to match the official, targeting only Left Hand (Shield), Armor and Helm. (#2589)
  • Fixed racial crit bonuses not being affected by katar crit bonus. (#2588)
  • Fixed interaction between Lex Aetherna and Stone/Freezing, now mutually exclusive. (#2598, issue #2559)

Removed

  • Removed mob_avail.txt, since its functionality has been moved to the mob database. (part of #2572)

v2019.11.17+1

18 Nov 20:11
75ae018
Compare
Choose a tag to compare

Added

  • Added an SQL linter. The ./tools/checksql.sh script can be used to automatically validate the syntax of every file in the sql-files folder (note: dependencies might need to be installed through composer). The script is also executed in the Travis builds. (#2582)

Fixed

  • Fixed a syntax error in the 2019-10-12--14-21.sql migration file. (part of #2582)