Releases: HerculesWS/Hercules
Releases · HerculesWS/Hercules
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)
v2021.02.08
Added
- Extended the quest database with new options. (#2874)
- Mob ID can be set to 0 to allow any monster ID.
- A monster level range can now be specified.
- A target monster's map can now be specified.
- A target monster's type (size, race and/or element) can now be specified.
- Added new quest database entries using the new options. (part of #2874)
- Added a failed assertion backtrace report in the removing player error in
unit->remove_map()
. (part of #2938) - Added support for constants and improved error messages in the quest DB. This affects the
Mob_ID
,Drops/ItemId
andDrops/MobId
fields. (#2886) - Added inheritance mechanism for the pet DB. Inheritance works in the same way as the mob and item databases, allowing to specify the
Inherit: true
flag in order to inherit (rather than overriding) an existing entry with the same Id. (#2206, issue #2181) - Updated the map database, NPC and Hateffect constants with new data. (#2936)
Changed
- Changed the free cell search (as used by random mob spawns or teleport) to ignore the map margins, as in official servers. The margin size defaults to the official value of 15 and can be changed by editing the
search_freecell_map_margin
setting inmisc.conf
. (#2911) - Refactored and sanitized
map->search_freecell()
. The function has been renamed tomap->search_free_cell()
since the meaning of its return values has changed. (part of #2911) - Refactored and documented some pet database functions and added validation of the pet DB entries before they're inserted into the database. The new constant
ITEMID_PET_FOOD
has been added. (part of #2206)
Fixed
- Fixed a signed left shift overflow in socket.c. (part of #2938)
- Fixed failing github workflows builds, switching from clang-10 to clang-11 since the former is no longer available in the Debian repositories. (part of #2938)
- Forcefully disabled the compiler flag
-fcf-protection
to avoid issues in thesetjmp()
calls. (#2938) - Fixed some missing item IDs referenced by the quest DB in pre-re mode. (part of #2886)
- Fixed grfio issues with large grf files. (#2937)
v2021.01.11
Added
- Integrated the Renewal mob database with the correct
DamageTakenRate
value for MVPs that require it. Those MVPs have a green aura and only receive 10% of the damage dealt to them. (#2875) - Added an enum for client action types. See
enum action_type
. (#2930) - Added skill prerequisite checks before leveling up homunculus skills, allowing the definition of prerequisites for non-evolved or non-loyal homunculi, as it was previously limited to those. The check is disabled when the
player_skillfree
setting is enabled in the battle config. (#2807) - Added constants for the
mercenary_delete()
script command as well as themercenary->delete()
function and documentation for the formerly undocumented values. Seeenum merc_delete_type
and the script constantsMERC_DELETE_*
. (part of #2858, issue #2843)
Changed
- Cleaned up mob database from redundant
MVPExp: 0
fields. (part of #2875) - Updated packet
CZ_REQUEST_ACTNPC
to use a struct. (part of #2930) - Changed the default mercenary delete type of the
mercenary_delete()
script command to be fired by the user (not updating loyalty). (#2843)
Fixed
- Fixed an issue that caused the Sign quest to lock up and become unfinishable for everyone when a player times out or logs out under certain conditions. (#2921)
- Fixed an exploit that allowed multiple people into the solo room of the Sign quest. (part of #2921)
- Fixed a failed assertion when using the
MH_SUMMON_LEGION
skill. (#2929)
Removed
- Removed the undocumented and meaningless return value of
mercenary->delete()
, now returning void. It was previously relying on the return value of two other functions, and ultimately always returning zero. (part of #2843)
v2020.12.14+1
Fixed
- Fixed a crash in
unit->run_hit()
caused by a regression in the last update. (#2924)
v2020.12.14
Added
- Added a warning when
setnpcdisplay()
orsetunitdata()
is called on a floating NPC. (#2907) - Added support for RSW formats up to 2.5 for reading map water level. (#2916)
- Added a
status->check_skilluse_mapzone()
function, simplifyingstatus->check_skilluse()
and adding a useful plugin hooking point. (#2893)
Changed
- Second part of the refactoring of the functions in
unit.c
, adding code documentation and following the code style guidelines. Functions have been renamed when backward compatible changes to the arguments or return values were made. (#2783)- Added proper documentation in doxygen-format.
- Moved variables declaration closer to their first use
- Corrected mistreatment on checks of non-boolean variables
- Renamed some variables to clarify their use
- Saved re-used calculations in variables or create local macros for them
- Simplified logical checks / conditions when possible
- Changed returning error-code in functions to obey code-style guidelines (Functions that are affected by this are renamed so that custom code fails to compile as to point at that change of behavior.)
- Split too long lines according to code-style guidelines
- Made functions use enums for directions (
enum unit_dir
), when dealing with a direction context - Reduced code-repetition by separating code-chunks into new functions
- Fixed remaining code-style after applying all these changes if necessary
- The following functions have been refactored:
unit->walktobl()
(renamed tounit->walk_tobl()
)unit->run_hit()
unit->run()
unit->escape()
(renamed tounit->attempt_escape()
)unit->movepos()
unit->walk_toxy_timer()
(return value fix)unit->blown()
(renamed tounit->push()
)path->blownpos()
(related to theunit->blown()
change)- added
npc->handle_touch_events()
function - the
is_boss()
macro now returns a boolean
- Added static assertion checks to prevent
MAX_STORAGE
andMAX_GUILD_STORAGE
from causing oversized inter-server packets (#2904) - Disabled the HP bar on Emperium and MVP monsters by default. The configuration flag
show_monster_hp_bar
has been extended to a bitmask, to allow specifying different setting for normal monsters, Emperium and MVPs. The new default value is 1 (normal monsters only), while the value corresponding to the previous behavior is 7 (4|2|1
). (#2821)
Fixed
- Fixed a walk delay error in
unit_stop_walking()
. (part of #2783) - Fixed homunculi and mercenaries not warping back to their master in time. (part of #2783)
- Reverted an unintended logical change in
unit->walk_toxy_timer()
done during the first part of theunit.c
refactoring. (#2783) - Fixed a warning (
Warning: #1681 Integer display width is deprecated and will be removed in a future release.
) when importing the database schema in recent versions of MySQL. (#2903) - Fixed compilation with recent versions of the MySQL/MariaDB client libraries. (#2917)
- Fixed a farming exploit at the Cursed Spirit NPC. (#2883)
- Fixed the configuration flag
monster_loot_type
not working as intended. (#2855, issue #2834)
Removed
- Removed the unused function
skill->get_linked_song_dance_id()
. (#2906)