Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
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)
v2019.05.05+3
v2019.05.05+2
v2019.05.05+1
v2019.05.05
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 ofmob_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()
andsetunittitle()
, and the related information in theunit_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
inclient.conf
(note: the previous behavior was equivalent totrue
). (part of #2432) - Added an option to force character save when the party options are changed. See
save_settings
inmap-server.conf
. (part of #2432) - Added the script command
closeroulette()
and the related packetZC_ACK_CLOSE_ROULETTE
to close the roulette window. (part of #2432) - Added a missing
CSBR_BUSY
value toenum CASH_SHOP_BUY_RESULT
. (part of #2432) - Added support for the refinery UI. See the new
refine_db.conf
changes and the settingsenable_refinery_ui
andreplace_refine_npcs
infeatures.conf
to toggle between the new UI and the previous scripted refiner. (#2446) - Added a new
SkillInfo
flagHiddenTrap
, to make certain traps invisible, according to thetrap_options
configuration flag. The default settings have changed to match Renewal. Pre-renewal users might want to reviewtrap_options
and the now supersededtraps_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()
andsetunitdata()
with support for the group ID (UDT_GROUP
), and added the related information in theunit_data
structure. (part of #2432) - Moved the
UDT_*
constants fromconstants.conf
toscript.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 accessorsrefine->get_bonus()
andrefine->get_randombonus_max()
. (part of #2446) - Changed several battle calculation limits to be configurable through
battle/limits.conf
and no longer hardcoded. Severalstatus_data
fields and battle functions now useint
instead ofshort
to accommodate this change. (#2419) - Changed the
unitwarp()
script command to allow NPCs to be relocated to non-walkable cells (likemovenpc()
). (#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()
andaddHookPostPriv()
. (#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 byconsolemes()
. (part of #2440)
Removed
- Removed the superseded
traps_setting
configuration flag, replaced bytrap_options
. (part of #2232)