Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
v2021.10.06+1
v2021.10.06
Added
- Implemented the official Macro Detection/Captcha system. Note: a client patch may be necessary, in order to correct an inconsistency between the BMP formats accepted by the Register functions and the Detector/Preview UI. (#3051)
- Includes:
- The Macro Register UI, available through the
/macro_register
command. - The Macro Detector UI, triggered by the server to send captcha challenges to players.
- The Macro Reporter UI, available through the
/macro_detector
command. - The Captcha Preview UI, available through the
/macro_preview <captcha_id>
command.
- The Macro Register UI, available through the
- See the Pull Request #3051 description and http://nemo.herc.ws/patches/ChangeCaptchaImageDecompressionSize/ for screenshots and more details.
- Includes:
- Added a new SC flag
NoMagicBlocked
, to block a status change while under the no magic state. (#3050) - Added a startup check to ensure the best/fastest available clock source is used on Linux. (#3046)
- Added the skill flags
RangeModByVulture
,RangeModBySnakeEye
,RangeModByShadowJump
,RangeModByRadius
,RangeModByResearchTrap
, replacing hardcoded skill range modifiers. (#3043)
Changed
- Removed redundant
sd->hd
NULL checks before calls tohomun_alive()
. (#3056) - Regenerated the
configure
script with Autoconf 2.71. (part of #3046) - Updated some party-related packets (
PACKET_ZC_ACK_MAKE_GROUP
,PACKET_ZC_PARTY_JOIN_REQ
,PACKET_ZC_PARTY_JOIN_REQ_ACK
,PACKET_ZC_NOTIFY_CHAT_PARTY
,PACKET_ZC_NOTIFY_POSITION_TO_GROUPM
,PACKET_ZC_NOTIFY_HP_TO_GROUPM
,PACKET_ZC_PARTY_MEMBER_JOB_LEVEL
,PACKET_ZC_DELETE_MEMBER_FROM_GROUP
to use the struct format. (#3049) - Updated
.mailmap
. (#3010)
Fixed
- Fixed Kaite in Renewal to increase melee damage to 400% as in official servers. (#3054)
- Added a missing
equipFlag
to theZC_ENCHANT_EQUIPMENT
packet. (#3052) - Fixed
SC_GENTLETOUCH_CHANGE
not applying the WATK bonus. (#3048, issue #1629) - Fixed the
Daehyon_Card
script effect to only work on One or Two Handed Sword. (#3047, issue #2996) - Fixed
SC_HOWLING_MINE
to usestatus->isdead()
through the HPM interface instead of directly. (#3044) - Fixed the weapon type requirement of
KO_JYUMONJIKIRI
to require that left and right hand aren't bare fists (but the right hand can be a shield). (#3041) - Fixed the
Womens_Bundle
item script and thenpc_live_dialogues.txt
documentation still referencing theF_RandMes()
function instead ofF_Rand()
. (#3040, issue #3039) - Fixed a redundant
MAPID_BABY_TAEKWON
in thepc_jobchange()
fame list check. (#3057)
Others
- Note: Even if we release at the beginning of the month, Hacktoberfest is still in progress! We'll be granting the
hacktoberfest-accepted
label to any valid PRs opened before October 31st, even if we'll include them in the November release. Make sure to sign up on https://hacktoberfest.digitalocean.com/ and open your PRs before the deadline if you wish to participate. Happy Hacktoberfest!
v2021.09.01
Added
- Added a sanity check of skill IDs against
MAX_SKILL_ID
when loading the skill database. (part of #3033) - Added Rebellion skills, items and SCs to the Pre-Renewal database. (#3031)
- Added the
NoBBReset
flag for SC types that shouldn't be reset by the Rebellion skill Banishing Buster. (#3032)
Changed
- Increased
MAX_SKILL_ID
to 10020 to fit all the currently existing skills. (#3033) - Updated the list of job IDs displayed by
@jobchange
. (#3029)
Fixed
- Fixed the mob groups reading the rate from the wrong object, resulting in the fallback value
MOBID_PORING
being returned in many cases. (#3037, issue #3036) - Fixed typos in various documentation comments. (#3035)
- Fixed the Extreme Vacuum skill causing a permanent
SC_VACUUM_EXTREME
status when it hits several targets at the same time. (#3025, related to #2995) - Fixed the damage of piercing critical attacks with Thanatos Card in Renewal. (#3023, issue #3022)
- Fixed the Ignition Break animation in recent (2018 and newer) clients. (#3034, issue #2511)
- Fixed the Blast Mine, Claymore Trap and Land Mine damage to ignore card damage reductions. (#3024, formerly #1149)
v2021.08.04
Added
- Added support for the official Guild Storage system, supported starting with PACKETVER 20131223. Older PACKETVERs aren't affected by this change. (#1092)
- When the official system is enabled, a guild will require the
GD_GUILD_STORAGE
skill in order to obtain access to Guild Storage. - Starting with PACKETVER 20140205 it's possible to control access to the Guild Storage through permissions defined in the Guild window.
- Since this change can lock existing guilds out of their storage until and if they invest skill points in
GD_GUILD_STORAGE
, it's possible to opt out and keep using the custom system (fixed size, no skills required) by defining theDISABLE_OFFICIAL_GUILD_STORAGE
preprocessor macro. - When the official guild storage is enabled,
MAX_GUILD_STORAGE
can't/shouldn't be redefined. TheGUILD_STORAGE_EXPANSION_STEP
macro is instead provided, defining the amount of storage slots that each level of theGD_GUILD_STORAGE
skill will provide. - Increasing the maximum level of the
GD_GUILD_STORAGE
skill may lead to unexpected behaviors. If you must, you'll at least need to edit theMAX_GUILD_STORAGE
macro definition to increase the maximum skill level. - When this is enabled, the
MAX_GUILD_STORAGE
script constant will refer to the maximum possible guild storage, rather than the current size of a specific guild's storage. - This requires a database migration.
- When the official system is enabled, a guild will require the
Changed
- Moved the
map->freeblock_unlock()
call fromskill_castend_nodamage_id_unknown()
to its caller. (#3019) - Converted the random monster databases to libconfig. See
db/*/mob_group.conf
anddb/mob_group2.conf
. A converter (tools/mobgroupconverter.py
) is provided, in order to convert custom databases. (#3013) - Major refactoring of the Guild Storage related code and documentation. The Guild Storage items are now held in a dynamically sized array. (part of #1092)
Fixed
- Fixed a crash when a bl is deleted twice.
map->freeblock()
will now detect it and prevent the double deletion. (#3021) - Fixed a damage overflow in
GN_CART_TORNADO
when a character's base strength is very high. The base str value is now capped to 130 for the skill formula's purposes. (#2927, issue #659) - Fixed the behavior of
SC_POWER_OF_GAIA
to increase the maximum HP in percentage rather than by a fixed amount. (#2918)
Removed
- The txt version of the random monster databases (
mob_classchange
,mob_pouch
,mob_boss
,mob_branch
,mob_poring
) is no longer supported. Custom databases need to be converted to libconfig with the provided tool. (part of #3013)
v2021.07.07
Changed
- Updated some guild-related packets to use the struct format. (#3016)
Fixed
- Fixed off-hand damage bypassing any card reductions on the target. (#3014, issue #3011)
- Fixed indentation and extra blank lines in the renewal skill db file. (#3012)
- Fixed the use of
setunitdata()
on a mob to change that specific unit's view data instead of overwriting it globally. Any such changes will now persist in case of the mob database is reloaded. (#3006)
v2021.06.02
Added
- Added diagnostic checks around map free blocks when asan is on, to track bl double free issues. (#3005)
- Added support for checking the clients' supported features through client flags (requires a client patched with the SendClientFlags patch - currently supports
ENABLE_CASHSHOP_PREVIEW_PATCH
only, more to come later). See thelogin_configuration/permission/check_client_flags
andlogin_configuration/permission/report_client_flags_error
settings inlogin-server.conf
. (#3001) - Added support for the Rebellion skills. (#2997)
Changed
- Updated the cooldown of Neutral Barrier (
NC_NEUTRALBARRIER
) to depend on the skill level. (#2934) - Changed
successremovecards()
to automatically re-equip the item, for consistency withfailedremovecards()
. (part of #3004)
Fixed
- Fixed an issue that prevented dual monster races from completing. (#2990, issue #2989)
- Fixed a crash with evolved homunculi. (#3008)
- Fixed mapflags in instanced maps not getting reloaded correctly after scripts are reloaded. (#3003, issue #3002)
- Fixed the visual effect of Killing Cloud (
SO_CLOUD_KILL
). (#2980, issue #2978) - Fixed a regression in Ankle Snare (
HT_ANKLESNARE
) caused by a recent Manhole update. (#2965, issue #2964) - Fixed an issue that prevented a character from equipping items after attempting to use the Refine skill with no refinable items in inventory. (#3007)
- Fixed an issue that prevented the automatic re-equipping of items by
failedremovecards()
setequipoption()
. (#3004)
v2021.05.05
Added
- Added settings to modify the chain item drop rates. See
item_rate_add_chain
,item_drop_add_chain_min
anditem_drop_add_chain_max
in drops.conf for details. (#2983, issue #2982) - Added a check to ensure that the
map->freeblock_lock()
andmap->freeblock_unlock()
calls are balanced (GCC only). (#2992)
Changed
- Documented that
struct script_state::rid
can contain the GID of a mob when called throughOnTouchNPC
. (part of #3000) - Merged the homunculus exp tables into
exp_group_db
(#2998)
Fixed
- Fixed a crash in the
WL_WHITEIMPRISON
skill as well as possible crashes in theST_SWORDREJECT
andASC_BREAKER
skills. (#2991) - Fixed the adoption request entry in the character context menu. (#2993)
- Fixed the Vacuum Extreme status becoming permanent until logout or death. (#2995, issue #2919)
- Fixed Free Cast ignoring other speed modifiers (bypassing speed debuffs such as Curse). (#2987, issue #2976)
- Fixed the trade restrictions for the Monster Ticket item, which should disallow dropping, trading, etc. (#2986, issue #2985)
- Fixed an issue in the custom warper NPC that caused characters to get stuck when selecting the last warp option when it wasn't set yet. (#2984)
- Fixed an error when
getarraysize()
,soundeffectall()
,atcommand()
oruseatcmd()
are called from anOnTouchNPC
script. (#3000, related to issue #2989) - Fixed
montransform()
,clan_join()
,clan_leave()
andclan_master()
not reporting an error when called without RID attached. (part of #3000) - Fixed the Water Screen skill, now deflecting the damage to the Aqua elemental spirit and healing the master by 1000 HP every 10 seconds. (#2981)
- Fixed the Guardians in WoE:SE spawning in random locations instead of their designated ones. (#2999)
Removed
v2021.04.05+1
v2021.04.05
Added
- Added new
SP_*
constants in preparation for adding 4th jobs and reformatted thestatus_point_types
enum to have one entry per line, with their respective values. (part of #2968) - Added support for the Baby Summoner job class. (part of #2968)
- Added support for the Baby Ninja job class. (part of #2968)
- Added support for the Baby Kagerou and Baby Oboro job classes. (part of #2968)
- Added support for the Baby Taekwon job class. (part of #2968)
- Added support for the Baby Star Gladiator job class. (part of #2968)
- Added support for the Baby Soul Linker job class. (part of #2968)
- Added support for the Baby Gunslinger job class. (part of #2968)
- Added support for the Baby Rebellion job class. (part of #2968)
- Added support for the Star Emperor job class and related skill ID constants and skill database entries. Skill ID conflicts between Star Emperor and Rebellion were solved in favor of the former for renewal and the latter for pre-renewal for the time being. (part of #2968)
- Added support for the Baby Star Emperor job class. (part of #2968)
- Added support for the Soul Reaper job class and related skill ID constants and skill database entries. (part of #2968)
- Added support for the Baby Soul Reaper job class. (part of #2968)
Changed
- Moved the mappings between skills and status changes (
Skill2SC
table) into theStatusChange
field of the skill database. TheSkills
field of thesc_config
is renamed toSkill
and limited to one associated skill per SC. (#2971) - Added the corresponding numeric value next to each entry in the
e_class
enum, to prevent accidental renumbering and to make lookup easier. (part of #2968) - Added some missing constants for job IDs or separators in the
e_class
enum. (part of #2968) - Improved validation of the
class_exp_table
of thejob_db
with additional sanity checks. (part of #2968) - Moved the
EAJ_*
constants fromconstants.conf
to the source and added the ones that were missing (EAJ_WEDDING
,EAJ_XMAS
,EAJ_SUMMER
,EAJ_BABY_SUMMONER
). (part of #2968) - Changed the warning message displayed when a constant is redefined with the same value as previously defined to mention that it has the same value. (part of #2968)
- Renamed the
job_name()
function topc_job_name()
. The public interface name is stillpc->job_name()
. (part of #2968) - Moved the job enum values into separate files (
common/class.h
,common/class_special.h
andcommon/class_hidden.h
), to be accessed through theENUM_VALUE()
X-macro and reduce repetition. (part of #2968) - Added the
-Wswitch-enum
warning to the default compiler settings (with an exception for libbacktrace). (part of #2968) - Improved validation of
job_db2
, now detecting missing jobs. (part of #2968) - Changed some function parameters from integers to the appropriate enums. (part of #2968)
- Split the status change config into renewal and pre-renewal. (part of #2963)
- De-hardcoded the status change calculation flags, moving them from the source to the
CalcFlags
field of thesc_config
. (#2963)
Fixed
- Fixed a regression in the association between skills and status changes. (part of #2971, issue #2969)
- Added support for the Summoner job to the
db2sql
plugin. (part of #2968) - Fixed validation of the skills cast through Abracadabra (Hocus Pocus). (#2972, related to #2859, issue #2824)
- Fixed validation of the skills cast through Improvised Song. (#2972, related to #2859, issue #2823)
- Worked around a client issue (packet containing garbage) that prevented proper validation of the Warp Portal skill use request when cast through Abracadabra, causing the caster to get stuck and unable to cast any other skills until relogging or teleporting. (#2972)
Removed
v2021.03.08
Added
- Added support for preview in the cash shop. This is disabled by default and can be enabled by defining
ENABLE_CASHSHOP_PREVIEW_PATCH
or through the configure flag--enable-cashshop-preview-patch
. A client patch is necessary, available at http://nemo.herc.ws/patches/ExtendCashShopPreview (#2944) - Added a console warning if a message that is not present in
messages.conf
is requested. (#2958) - Added the missing icons for
SC_DEFSET
andSC_MDEFSET
. (#2953) - Added the
SC_NO_RECOVER_STATE
status preventing HP/SP recovery and the related item bonusbStateNoRecoverRace
. (#2956)
Changed
- De-hardcoded the association between status changes and skills from the source code. A new field
Skills
is added to thesc_config
, allowing to specify a list of skills for each status change entry. The macroadd_sc
has been removed fromstatus.c
, usestatus->set_sc()
instead. (#2954) - Converted packets
ZC_NOTIFY_SKILL
,ZC_USE_SKILL
,ZC_NOTIFY_GROUNDSKILL
,ZC_SKILL_POSTDELAY
andZC_NOTIFY_SKILL_POSITION
to the structure format. (#2951) - Converted the Homunculus database to libconfig. A tool to help converting custom databases has been provided in
tools/homundbconverter.py
. (#2941) - De-hardcoded the list of skills that are blocked under
SC_STASIS
andSC_KG_KAGEHUMI
. A new pair ofSkillInfo
flagsBlockedByStasis
andBlockedByKagehumi
has been added to the skill database. (#2959) - Updated the item script of
Velum_Flail
to its official effects. (part of #2956)
Fixed
- Fixed compilation with mingw. (#2945)
- Fixed the CodeQL analysis builds in the CI. (#2946)
- Fixed a possible use after free in
unit_skilluse_id2()
. (#2947) - Fixed the save point message of the Kafra in
alb2trea
. (#2950) - Fixed some issues/regressions in the regeneration code: (#2952)
- Fixed an issue that caused the SP regeneration rate bonus to be applied to the HP regeneration.
- Fixed the HP/SP regeneration always capping to a minimum of 1, causing unintended behavior. (issue #2910)
- Fixed a issue that caused the homunculus regeneration configuration to apply to elementals instead.
- Fixed the Happy Break bonus not triggering.
- Fixed the doridori doubled SP regeneration applying to jobs other than Super Novice.
- Fixed Emergency Call ignoring
unit_skilluse_id2()
in Renewal. (#2949) - Fixed Manhole working on Guardians/Emperium while it shouldn't. (#2942)
- Fixed
successremovecard()
not running the cards' unequip scripts. (#2933, issue #2922)