Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
v2018.12.16
Added
- Added/updated packets, encryption keys and message tables for clients up to 2018-12-12. (#2324)
- Added support for the
AC_LOGIN_OTP
packets. (part of #2324) - Added script command
enchantitem()
and related packetZC_ENCHANT_EQUIPMENT
. (part of #2324) - Added script command
servicemessage()
and related packetZC_SERVICE_MESSAGE_COLOR
. (part of #2324) - Split packets struct definitions out from lclif into separate files for AC and CA packets. (part of #2324)
- Added struct definitions header for HC packets. (part of #2324)
- Added support for expandable inventory size, including database persistence, inventory expansion packets, the script commands
expandInventoryAck()
,expandInventoryResult()
,expandInventory()
,getInventorySize()
, the itemInventory_Extension_Coupon
and the scriptnpc/other/inventory_expansion.txt
. (part of #2324) - Added support for the client commands
/viewpointvalue
and/setcamera
(like@camerainfo
). The atcommand aliases@setcamera
and@viewpointvalue
are also provided. (part of #2324) - Added
needed_status_point()
script function and the global functionF_CashReduceStat()
, for permanent status point reduction. (#2246) - Added an option to include script interaction into the idle criteria, disabled by default. See
idletime_criteria
inconf/map/battle/player.conf
andBCIDLE_SCRIPT
. (#2244)
Changed
- Extended support for 32 bit item IDs to the Zero and Main clients that support them. (part of #2324)
- Renamed packet identifier macros from
PACKET_ID_*
toHEADER_*
. (part of #2324) - Renamed packet struct definitions from
packet_*
toPACKET_*
. (part of #2324) - Increased
MAX_PACKET_LOGIN_DB
to0x0AD0
to match the existing packets. (part of #2324) - Added buffer size validation for
char_mmo_char_tobuf
. (part of #2324) - Updated
npc/woe-se
files to modern standards, includingmes()
andmesf()
. (#2261) - Changed HPMDataCheck to exclude packetver-specific packet structs that would cause compile-time errors. (794ce3c)
Fixed
- Fixed
getunits()
returning the wrong value if no area size is passed. (41d370c, issue #2330) - Fixed support for old (2010 and older) clients in packet
ZC_PROPERTY_HOMUN
. (part of #2324) - Fixed Gaia Sword not granting any bonus drops. This reworks the way
s_add_drop
differentiates between items and groups and the parameters passed topc_bonus_item_drop()
. Custom code may need to be updated to match. (#2327) - Fixed a 'Gungslinger' typo in
item_db2
. (#2335) - Fixed delay-consumed items missing consumption after using Abracadabra/Improvised Song (#2298, issue #1169)
Removed
- Removed unnecessary typedef from
clr_type
. The type is now only available asenum clr_type
. (part of #2324)
v2018.11.18+1
v2018.11.18
Added
- Added an option to prevent character renames when in a guild or a party. This is the official behavior, but disabled by default since it's unnecessary in Hercules. To enable,
char_configuration/use_aegis_rename
can be set totrue
inchar-server.conf
. (#1866, issue #1805) - Added the script command
data_to_string()
, to return the string representation of the given data (counterpart togetd()
). (#2304) - Added/updated packets, encryption keys and message tables for clients up to 2018-11-14. (#2310, #2321)
- Added a configuration option for the maximum delay allowed by
@channel setopt MessageDelay
command, seechsys/channel_opt_msg_delay
inchannels.conf
. (#2287) - Added a configuration option for more accurate emulation of the HP display on dead characters. This setting is enabled by default, but the old, less confusing, behavior is available by setting
display_fake_hp_when_dead
tofalse
inclient.conf
. (#1215, issues #889 and #840) - Added
common/packets
, to provide a common interface to the packet DB, shared by all three servers. (#2321) - Added proof of concept of compile time validation of packet struct definition against the packet lengths DB (currently only for
ZC_ITEM_PREVIEW
). (part of #2321) - Added runtime client-server packet length validation in
RFIFOSKIP()
andWFIFOSET()
. An uncheckedWFIFOSET2()
alternative is still provided, for packets that lack a db entry. (part of #2321) - Added runtime validation for the size of
WIFOHEAD()
buffer allocations. (part of #2321)
Changed
- Made
getunits()
stop unnecessarily iterating when the maximum specified amount of units is reached. (#2105) - Updated the item bonus documentation, converted to the Markdown format in
doc/item_bonus.md
. (#2259) - Improved the channel delay message to include the remaining time before a new message can be sent. (#2286)
- Removed the unused
type
argument fromgetnpcid()
. All the shipped scripts have been updated. (#2289) - Improved the
charlog
to include the stats, class, hair color and style whenever available. This affects the character selection and rename log entries, that had most fields zeroed before. (#2320) - Updated the quest variables documentation, converted to the Markdown format in
doc/quest_variables.md
. (#2256) - Updated the monster modes documentation, converted to the Markdown format in
doc/mob_db_mode_list.md
. (#2255) - Documented
flag
of thestatus->heal()
function through theenum status_heal_flag
. (part of #1215) - Added packet versions for all server types to the socket datasync validation. (part of #2321)
Fixed
- Fixed packet
ZC_FORMATSTRING_MSG_COLOR
for clients older than 20160406. (part of #2310) - Fixed the output formatting in the unhandled packet reporter. (part of #2310)
- Improved grammar in the
CONTRIBUTING.md
document. (#2303) - Fixed some logically dead code in
status.c
. (#2265) - Fixed some alerts reported by LGTM for the python scripts. (#2268)
- Fixed some typos in the
README.md
document. (#2283) - Fixed a crash and/or mapflag inconsistency when reloading scripts, especially in PK servers. Map zones are now removed correctly during a reload. (#2247, issue #2242)
- Fixed an overflow in the defense calculation when fighting more than 22 enemies. (#1233, issue #1201)
- Fixed the gitlab-ci builds with clang-4.0, which was removed from Debian testing/unstable. (#2323)
- Fixed an issue that caused a character leaving their guild to still receive some
#ally
messages from certain allied guilds. (#2322) - Fixed an issue that caused a character joining a guild not to join its
#ally
channel group. (part of #2322) - Fixed a duplicated line in the
@channel
help output. (part of #2322) - Fixed some code that assumed a character to be already on a map and attempt to leave an invalid
#map
channel when logging in. (part of #2322)
Removed
v2018.10.21
Added
- Unknown packets are now printed to the console, when the option to dump them to disk (
DUMP_UNKNOWN_PACKET
) is disabled. (part of #2226) - Added/updated packets, encryption keys and message tables for clients up to 2018-10-02 (#2226)
- Implemented the script command
removespecialeffect()
. (part of #2226) - Implemented the atcommand
@camerainfo
and the script commandscamerainfo()
andchangecamera()
. (part of #2226) - Added options to enforce a minimum buy/sell price for NPC items, defaulting to the official values of 1 and 0, respectively. (#2208, issue #2177)
- Added documentation for the script command
achievement_progress()
. (#2249) - Added/updated packets, encryption keys and message tables for clients up to 2018-10-17 (#2278)
- Implemented script command
itempreview()
. (part of #2278) - Added placeholders for 493 items from kRO. (#2280)
Changed
- Converted the effect list documentation to Markdown (
effect_list.md
). (#2230, issue #2215) - Improved the GitHub pull request and issue templates. (#2237)
- Allowed
getd()
to work with constants and params (although this is a discouraged practice). (#2240) - Converted the permissions documentation to Markdown (
permissions.md
). (#2253) - Extended
getiteminfo()
andsetitmeinfo()
with the trade restriction information (ITEMINFO_TRADE
). TheITR_*
constants are made available to the script engine, and the global functionF_GetTradeRestriction()
has been provided, for convenience. (#2172) - Converted the global configuration documentation to Markdown (
global_configuration.md
). (#2229, issue #2216) - Removed duplicated code from the
showevent()
icon validation. (#2250) - Extended
setquestinfo()
with a mercenary class option (QINFO_MERCENARY_CLASS
). (#2251) - Removed duplicated/diverging code from the
@bodystyle
command. (#2264) - Removed duplicated code for
prompt()
, now sharing the same function asselect()
. The new constantsMAX_MENU_OPTIONS
andMAX_MENU_LENGTH
have been provided. (#2279)
Fixed
- Fixed an assertion failure in the zeny achievement, when the amount of zeny is zero. (#2227)
- Fixed issues when setting a char or account variable of another player. (#2238, issue #2212)
- Fixed a failed assertion when a character is invited to and joins a guild. (#2235, issue #2210)
- Fixed a failed assertion when
sc_end()
is called forSC_BERSERK
. (#2239, issue #1388) - Fixed display issues with homunculus in old clients. (#2252)
- Fixed damage reflection (through Reflect Shield, High Orc Card, etc) to work on traps. The old, unofficial, behavior can be restored through the battle configuration flag
trap_reflect
. (#2182, issue #1926) - Fixed Blast Mine and Claymore Trap damage, that wasn't getting split by the number of targets. (#2182, issue #1900)
- Fixed an assertion failure when refining an item fails. (#2234, issue #2217)
- Fixed the gitlab-ci builds with clang-5.0, which was removed from Debian testing/unstable. (58afe04)
v2018.09.23
Added
- Added LGTM.com code quality badges to the README. (#2202)
- Added maps and constants related to episode 17.1 to the map database and constants list. (#2203)
- Added/updated packets, encryption keys and message tables for clients up to 2018-09-19 (#2199)
- Added
-Wvla
to the compiler flags, to prevent accidental usage of variable length arrays. (#2199) - Implemented
PACKET_CZ_MEMORIALDUNGEON_COMMAND
. (#2195) - Extended
setquestinfo()
with support for item amount ranges. (#2218) - Implemented the Mob Skill DB generator into the
db2sql
plugin. (#2149)
Changed
- Changed the Travis build to use the maximum available PACKETVER, so that the recent code is tested. (#2199)
- Added a shortand to call
mes()
without arguments to meanmes("")
. (#2193)
Fixed
- Added a missing
IF NOT EXISTS
clause in thechar_achievements
table creation query. (e71e41b) - Fixed an issue in packet
ZC_INVENTIRY_MOVE_FAILED
(#2199, issue #2213) - Fixed a validation error in
setquestinfo()
. (#2218) - Fixed an error in the achievement system, when killing a cloned mob. (#2204, issue #2201)
- Fixed a trucation issue in the card columns of the database. (#2205, issue #2187)
- Fixed a crash when a character is removed from the
char
table but not from theguild_member
. (#2209, issue #2173)
v2018.08.26+1
v2018.08.26
Added
- Added the
@setzone
command, which allows changing the zone of the current map on the fly. (#2162) - Added/updated packets, encryption keys, and message tables for clients up to 2018-08-08. (#2176)
- Added support for
sak
andad
clients. (#2185) - Made the server display the client type (
main
,RE
,zero
,sak
,ad
) on startup. (#2185) - Added const-correct wrappers for
strchr()
,strrchr()
,strstr()
, when building with C11-compatible compilers. (#2189)
Changed
- Made the map zone db also reload when
@reloadscript
is used. (#2162) - Updated the
is_function
script command to support built-in commands, local functions, and local subroutines. (#2154) - Updated the
debugmes
script command to support printf format strings. (#2146) - Changed the language specification to
C11
in autoconf builds. (#2189)
Deprecated
script->add_str()
should no longer be used by plugins to inject variables, asscript->add_variable()
supersedes it. (#2164)
Fixed
- Fixed the
@mapflag
command not working with thetown
mapflag. (#2133, #2162) - Fixed some issues with the banking and roulette packets. (#2190)
- Fixed the compiler throwing a warning when
MAGIC_REFLECTION_TYPE
is set to0
. (#1920, 2175) - Fixed some vague item bonus documentation for
bHealPower
andbHealPower2
. (#2125) - Fixed some issues in the GitLab CI CentOS builds that prevented the pipelines from succeeding. (#2191)
- Reverted [v2018.07.29+1] and fixed the underlying issue, which caused some script variables to end up with an incorrect type. (#2164)
- Fixed some constants that had an invalid type, which caused undefined behaviour with
getdatatype
. (#1801, #2164) - Fixed zeny spending achievements recording the zeny amount in negative values. (#2171)
v2018.07.29+2
v2018.07.29+1
Fixed
- Added a temporary patch for getd when variable types are C_NOP. (#2163)
v2018.07.29
Added
- Added support for the Achievements system and the Titles system. (#2067, #2157, #2161)
- Added a stylist db option to restrict some hairstyles for the Doram race. (#2155)
- Added/updated packets, encryption keys, and message tables for clients up to 2018-07-18. (#2139, #2126, #2132)
- Added support for the overweight percentage packet for clients older than 2017-10-25. (#2139)
- Added support for the chat commands
/changedress
and/nocosplay
. (#2139) - Added support for the party member death notification packet for clients older than 2017-05-02. (#2139)
- Added support for body style to the stylist. (#2138)
- Added a
dead_area_size
battle config option to configure the area to which player death packets are sent. (#2088) - Added project files for Microsoft Visual Studio 2017 (#2131)
Changed
- Updated the warp list packet for clients older than 2017-04-19. (#2139)
- Simplified the
questinfo()
script command and addedsetquestinfo()
. This may break some scripts, but is easily fixable with a regular expression search/replace. (#2107) - The constants database will now also be reloaded when calling
@reloadscript
. (#2130) - The maximum item ID for the item database is now
65535
for clients older than 2018-07-04, and131072
for newer clients. It may be increased up to a maximum of2147483648
in the future, as needed. (#2134) - Added the missing
pos
parameter toskill_init_unit_layout_unknown()
. (#2143)
Deprecated
- Microsoft Visual Studio 2012 is no longer officially supported. (#2131)
Removed
- Removed the
EF_ANGEL3
effect from the novice academy, as it is now triggered by the Achievements system. (#2156)
Fixed
- Fixed a bug which made the
Venom Splasher
skill consume gemstones twice. (#2148) - Fixed a bug that could make skill cooldowns never expire, rendering the skill unusable. (#2147)
- Fixed the maximum array size being higher than the maximum integer (uint32 vs int32), which could cause integer overflows in scripts. (#2093)
- Fixed a wrongly named constant, which made
Sea-Otter Card
not increase theSushi
heal rate. (#2117) - Fixed misc bugs related to pet evolution. (#2136, #2153)
- Fixed a bug that sent an attendance system message without the attendence ui being opened. (#2129)
- Corrected several outdated documentation references to db/constants.conf, to point to doc/constants.md. (#2090)
- Fixed an issue in the script command
getd()
that wouldn't properly initialize the type of newly created variables throughset(getd(...), ...)
(#2158) - Fixed a missing memory initialization in several dummy
struct block_list
entries created as local variables. (#2159)