Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
v2019.11.17
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 constantsGUILDINFO_*
, to lookup information about a guild. (#2566) - Added a separate configuration flag in
map_log.enable
to control the logging ofLOG_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 insc_config
. (#2570) - De-hardcoded the combo skills chaining check. It's now controlled by a new
IsCombo
flag inskill_db
. (#2573) - De-hardcoded the status icons. They are now defined through a new
Icon
field insc_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()
, usegetguildinfo(GUILDINFO_NAME, <guild id>)
instead. (part of #2566) - Deprecated the script command
getguildmaster()
, usegetguildinfo(GUILDINFO_MASTER_NAME, <guild id>)
instead. (part of #2566) - Deprecated the script command
getguildmasterid()
, usegetguildinfo(GUILDINFO_MASTER_CID, <guild id>)
instead. (part of #2566)
Removed
- Removed the
SI_*
constants from the source code, now available throughconstants.conf
. (part of #2577)
v2019.10.20
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 themap_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 inbattle/monster.conf
for those that wish to keep using the old custom behavior. (#2561) - De-hardcoded the path to the
db
folder, now usingmap_configuration.database.db_path
andchar_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 frombattle/guild.conf
. (#2552)
v2019.09.22
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
andOnRentalEndScript
. (#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 intools/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
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 forZC_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()
andgetiteminfo()
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
andZC_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
v2019.07.28
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. Seeautoloot_adjust
indrops.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
inhomunc.conf
. Note: in order to restore the previous behavior, the setting can be changed to0
. (#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()
andsetunitdata()
/getunitdata()
with accessors for the newDamageTakenRate
mob DB field, using, respectively,MOB_DMG_TAKEN_RATE
andUDT_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()
andisequippedcnt()
to correctly handle costume equipment. (#2508)
v2019.06.30
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()
andautofavoriteitem()
script commands. (#2427) - Implemented the new
@reloadnpc
atcommand, to reload a single script file. (#2476) - Implemented the new
identify()
andidentifyidx()
script commands and@identifyall
atcommand. (#2487)
Changed
- Suppressed unnecessary ShowWarning messages related to the
nosave
,adjust_unit_duration
andadjust_skill_damage
mapflags when using@reloadscript
. (#2410, issue #2347) - Updated the Rune Knight, Guillotine Cross and Ranger shops with missing items. (#2343)
Fixed
v2019.06.02
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
andnogstorage
mapflags, disallowing storage usage on the affected maps. Thebypass_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 editinginput_min_value
or locally by specifying themin
andmax
arguments toinput()
. (#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 bykillmonster()
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()
andgetinventorysize()
script commands to be lowercase, for consistency. (#2374)
Fixed
- Fixed the
failedremovecards()
command, to only remove the carts whentype
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
v2019.05.05+4
Fixed
- Fixed a reading error in refine database caused refine chances to be incorrectly read. (#2481)