Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
v2018.04.08
Added
- Added/updated packets support for clients from 2018-03-14 to 2018-04-04. (#1994 and #2014)
- Introduced macros
PACKETVER_RE_NUM
,PACKETVER_ZERO_NUM
andPACKETVER_MAIN_NUM
to simplify client type-specific version checks.
These macros are defined toPACKETVER
only if, respectively,PACKETVER_RE
,PACKETVER_ZERO
or neither are defined. (part of #1994) - Implemented Hat Effects, available in clients starting from 2015-04-22. (#1965)
- The
hateffect()
script command has been implemented. - The related constants (with prefix
HAT_EF_*
) have been added and made available to the script engine.
- The
- Added the 2015 variant of the quest-related packets. (#1111)
- Added login date information for guild members, on clients starting from 2016-10-26. The message format can be customized on the client side, by editing line 3012 of msgstringtable.txt. (#1986)
- Added support for the
ZC_FORMATSTRING_MSG
andZC_MSG_COLOR
packets, handling msgstringtable messages. (#2012) - Added a setting (
storage_use_item
initems.conf
) to control the use of items (usable/consumable/boxes) when the storage is open. (#1868, issue #1806) - Implemented the Attendance System, requiring client 2018-03-07bRagexeRE or newer. Configuration is available in
feature.conf
anddb/attendance_db.conf
. (#1990) - Added a configurable delay to the MVP Tombstone. The delay can be configured through the
mvp_tomb_spawn_delay
setting inmonster.conf
. (#2001, issue #1980)
Changed
- Updated the functions handling quest-related packets to use the struct-based form. (part of #1111)
- Converted the Pet DB to the libconfig format. A converter script (`petdbconverter.py) has been provided for convenience. (#2000)
- The
noteleport
mapflag has been added to the Archer Village (pay_arche
), to match official servers. (part of #2006) - The
script->sprintf()
function has been renamed toscript->sprintf_helper()
. (part of #2009)
Fixed
- Removed a duplicated line in the login server VS project that would prevent Visual Studio from loading it. (#1992)
- Prevented a console warning when a nonexistent map is passed to the
getmapinfo()
script command. (584e8de) - Fixed a RODEX loading data problem when a message's expiration date was manually edited. (#1995)
- Corrected the error messages displayed when using various restricted items to match the official servers. (#2006)
- Added a missing status refresh for the Homunculus Autofeed system when changing maps. (#2002)
- Fixed a NULL pointer check failure when
TK_JUMPKICK
is used by a non-player. (#2015, issue #1875) - Fixed compilation of the HPMHooking plugin on systems where
sprintf()
is a macro. (#2009, issue #2003)
v2018.03.11
Added
- Added a new
mapcache
plugin to convert, update or recreate mapcache files in the new format. (part of #1552) - Added appveyor configuration to the repository. (part of #1552)
- Exposed
script->sprintf()
to plugins. (#1976) - Added/updated packets support for clients from 2018-02-21 to 2018-03-09. (#1983)
Changed
- Updated the mapcache to a new, git-friendly, format having one file per map. (#1552, #1981)
- For info on how to convert or recreate mapcache entries, see the mapcache plugin (
./map-server --load-plugin mapcache --help
)
- For info on how to convert or recreate mapcache entries, see the mapcache plugin (
- Removed the display of PIN codes and passwords from the
@accinfo
GM command. Old code is kept commented out for those that may wish to re-enable it. (#1975) - Updated README.md with some clarifications and corrections. (#1985)
Fixed
- Updated the VS project files with the recently added .h files, for better intellisense/search. (#1970)
- Fixed a NULL pointer in
login->accounts
, only affecting plugins. (part of #1979) - Fixed a case of use after free in the
@reloadatcommand
GM command. (part of #1979) - Added several missing checks in various
clif_parse_*
functions. (part of #1979) - Fixed various PIN code related exploits. (part of #1979)
- Fixed a case of use after free when the option
delay_battle_damage
is set to false. (part of #1979) - Fixed a segmentation fault in clan-related code when using the
db2sql
plugin. (#1989, issue #1984) - Fixed an incorrect behavior in RODEX returned messages. (part of #1987)
- Fixed an error that made RODEX mails impossible to delete in some cases. (part of #1987)
- Fixed a NULL pointer in RODEX when the user tried to perform actions on unloaded mails. (part of #1987, issue #1977)
- Fixed an incorrect interaction between RODEX and NPCs. (#1936)
- Fixed an incorrect Kafra Points / Cash Points calculation. (#1541, issue #1540)
Removed
- Removed the old
mapcache
executable, superseded by the new plugin. (part of #1552)
v2018.02.11+1
v2018.02.11
Added
- Added/updated packets support for clients from 2017-12-13 to 2018-01-24. (part of #1957)
- Implemented the official Clan System, including the possibility of customization and a Clan vs Clan versus mode. (#1718, #1964, #1968, related to issue #241)
- New GM commands:
@claninfo
,@joinclan
,@leaveclan
,@reloadclans
,@cvcon
and@cvcoff
. - New script commands:
clan_join()
,clan_leave()
andclan_master()
; extendedstrcharinfo()
andgetcharid()
. - Configuration changes: see
conf/clans.conf
,conf/map/logs.conf
,db/clans.conf
,db/*/map_zone_db.conf
. - Note: This requires the SQL migrations
2017-06-04--15-04.sql
and2017-06-04--15-05.sql
. - Note: The
npc/re/other/clans.txt
script is now loaded by default in renewal mode.
- New GM commands:
- Added several (status-icon related) constants to the script engine (through the new
constants.inc
file). (part of #1718) - Implemented the missing HPM interfaces in the login server (account, ipban, lchrif), added the missing variables into the login interfaces. (#1963, issue #1908)
- The
_sql
suffix has been removed from the source files in the login server. - Functions in
account.c
andloginlog.c
have been prefixed withaccount_
andloginlog_
respectively. - The
chrif_
functions of the login server have been renamed tolchrif_
. - The
server[]
array has been moved tologin->dbs->server[]
. - The
account
(account.h),ipban
(ipban.h),lchrif
(login.h),loginlog
(loginlog.h) - Several
log_*
global variables have been moved to the loginlog interface, with their respective names. - The
account_engine[0]
variable has been moved tologin->dbs->account_engine
(note: this is not an array!)
- The
- Added/updated packets support for clients from 2018-01-31 to 2018-02-07. (#1969)
Changed
- Applied script standardization to the Bakonawa Lake instance script. (#1874)
- Applied script standardization to the Buwaya Cave instance script. (#1877)
- Applied script standardization to the Eclage Interior instance script. (#1878)
- Applied script standardization to the Hazy Forest instance script. (#1880)
- Applied script standardization to the Malangdo Culvert instance script. (#1881)
Fixed
v2018.01.14
Added
- Added support for the
AllowReproduce
flag in the skill DB. This supersedes the skill_reproduce_db. (#1943) - Added support for the
ZC_PROGRESS_ACTOR
packet. The packet is exposed to the script engine through theprogressbar_unit()
command (available on PACKETVER 20130821 and newer). (#1929) - Added support for the new item drop packet for the Zero clients. The packet is controlled by the
ShowDropEffect
andDropEffectMode
item DB flags and ignored by non-Zero clients. (#1939) - Added support for the new Map Server Change packet 0x0ac7. (part of #1948)
Changed
- Always enabled assertions and null pointer checks. In order to disable them (very discouraged, as it may lead to security issues), it is now necessary to edit
nullpo.h
. (#1937) - Disabled the address sanitizer's memory leak detector in the travis builds, since it produced failures in third libraries. (#1949, #1952)
- Applied script standardization to the Nydhogg's Nest instance script. (#1871)
- Split packet_keys.h into separate files for main clients and zero clients. (part of #1948)
- Split packets_shuffle.h into separate files for main clients and zero clients. (part of #1948)
- Replaced the custom bank unavailable error message with the actual bank check error packet. (part of #1948)
- Updated and corrected the party member and party info packets. (part of #1948)
- Updated README.md with more relevant badges and links (added Discord, removed Waffle, added more GitHub information). (#1951)
Fixed
- Updated Xcode project to include the RODEX related files. (#1942)
- Fixed RODEX loading mails when it requires multiple packets. (#1945, issue #1933)
Removed
- Removed the skill_reproduce_db, now superseded by the
AllowReproduce
skill flag. (part of #1943)
v2017.12.17
Added
- Implemented Homunculus Autofeeding, available on the 2017 clients. The feature can be disabled by flipping
features.enable_homun_autofeed
in feature.conf. (#1898) - Added support for the newly released Ragnarok Zero clients. The client type is controlled with the
--enable-packetver-zero
configure-time flag (disabled by default). (#1923)
Changed
- Applied script standardization to the Old Glast Heim instance script. (#1883)
- Split packets.h into two files: packets.h and packets_shuffle.h. (part of #1923)
Fixed
v2017.11.19+2
v2017.11.19+1
v2017.11.19
Added
- Added several missing members to the login interface. (Part of #1891)
- Added support for colored character server population counter in the service selection list. Configurable through
users_count
in login-server.conf. (#1891) - Added top-level command
miniboss_monster
to label monsters as minibosses, and to send them as such to the client. (part of #1889) - Added support for 2017-10-25 - 2017-11-01 clients. (#1889)
- Added support to display NPCs with player classes, including equipment and styles (best with clients starting from 20170726). This extends
getunitdata()
andsetunitdata()
with support forUDT_SEX
,UDT_HAIRSTYLE
,UDT_HAIRCOLOR
,UDT_HEADBOTTOM
,UDT_HEADMIDDLE
,UDT_HEADTOP
,UDT_CLOTHCOLOR
,UDT_SHIELD
,UDT_WEAPON
,UDT_ROBE
,UDT_BODY2
. (#1893) - Added type constants for the
getiteminfo()
andsetiteminfo()
script commands. Existing third party code must be updated to use the new constants (see the pull request description and the command documentation for details). (#1902) - Added global function
F_GetAmmoType()
, counterpart toF_GetWeaponType()
for ammunitions. Both functions have now been updated to only check the subtype if the item type is correct (IT_AMMO
andIT_WEAPON
respectively). (part of #1902) - Added support for the Skill Scale packet, available in client versions 20151223 and newer. (#1903)
Changed
- Applied script standardization to the Octopus Cave instance script. (#1882)
- Applied script standardization to the Ghost Palace instance script. (#1879)
- Applied script standardization to the Sara's Memory instance script. (#1884)
- Extended the script command
setequipoption()
with the possibility to remove item options from an equipment piece. (#1865) - Updated the
QTYPE_*
constants (questinfo()
,showevent()
) to support the new 2017 client icons. (#1894) - Applied script standardization to the Orc's Memory instance script. (#1872)
- Applied script standardization to the Sealed Shrine instance script. (#1873)
- Extended the global function
F_GetArmorType()
to support costumes and shadow equipment. (#1836) - Extended the script commands
has_instance()
andhas_instance2()
with suport to search instances of typeIOT_NONE
. (#1397) - Applied script standardization and improvements to the Endless Tower instance script. (#1862)
- Cleared some confusion between skill IDs and indexes through the codebase. Rewritten Skill DB accessors in a safer, more readable way. (part of #1896)
Deprecated
- The use of numeric type constants with
getiteminfo()
andsetiteminfo()
is deprecated. For technical reasons, no deprecation notice is displayed. (part of #1902)
Removed
- The
MAX_SKILL
constant has been removed, in favor of the more clearMAX_SKILL_DB
, to be used in all places that use the compacted Skill DB array. For use with the non-compacted clientside Skill IDs, theMAX_SKILL_ID
constant is still available. (part of #1896)
Fixed
- Fixed compilation warnings when compiling with gcc-7. (#1887)
- Fixed the display flag for monsters labeled as
boss_monster
to be that of MVP monsters instead of miniboss monsters. (part of #1889) - Fixed a subtle error in case
skill->unit_group_newid
overflows, causing certain skill unit entries to get stuck and never get deleted correctly. This can manifest itself with some monster spawns becoming immune to certain AoE spells having theUF_NOOVERLAP
flag (Storm Gust, Lord of Vermillion, etc). (#1896) - Implemented MATK support in the
getiteminfo()
andsetiteminfo()
. This functionality was previously advertised as availble in the command documentation, but was not implemented. (part of #1902) - Restored View Sprite support in the
getiteminfo()
andsetiteminfo()
. This functionality was lost with #1828. (part of #1902, issue #1895) - Reimplemented the global function
F_GetArmorType()
to reflect the fact thatITEMINFO_LOC
returns a bitmask. The function now handles multi-slot headgears and other uncommon cases better. (part of #1902) - Corrected some incorrect data types passed to the SQL
StmtBind
functions, causing query errors and data loss. Said functions will now have a runtime assertion to ensure the right data type is passed. Third party code needs to be updated to reflect this stricter requirement. (#1901, issue #1531) - Corrected some RODEX related queries in case
MAX_SLOTS
orMAX_ITEM_OPTIONS
are set to custom values. (part of #1901)
v2017.10.22+1
Fixed
- Fixed a wrong null pointer check in
logmes()
, which caused the command to never log and instead print debug information.