| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2022-11-02 | 9.0 kB | |
| v2022.11.02.tar.gz | 2022-11-02 | 19.0 MB | |
| v2022.11.02.zip | 2022-11-02 | 21.7 MB | |
| Totals: 3 Items | 40.7 MB | 0 | |
Added
- Updated the map cache and map list with new maps. (#3156)
- Updated the NPC ID constants and Hat effect constants with new IDs. (part of [#3156])
- Implemented the package item selection UI for recent clients that support it. (#3158)
- A new item type,
IT_SELECTPACKAGEis defined for this purpose (see theSelect_Example1item). - Added support for constants and bitmask arrays in
mob_skill_db.conf, for theConditionData,val<n>andEmotionfields. (#3164, issue [#2768]) - Exposed monster modes (
MD_*constants) to the script engine. (part of [#3164]) - Implemented the
@questatcommand, to manipulate a character's quest log. (#3166) - Implemented the Rebuilding the Destroyed Morroc quests from episode 14.3. Note: the quests (except the reward NPCs) are disabled by default. (#3167)
- Implemented the Enchant User Interface for clients that support it. (#3159)
- The enchantments are defined in the newly introduced
db/*/enchant_db.confdatabase.
Changed
- Refactored
status->get_sc_def()and its call chain (includingstatus->change_start()and thesc_start*()macros to include the skill ID, used for SC immunity checks. (part of [#3155]) - Updated the CodeQL GitHub workflow to follow the latest upstream templates. (part of [#3169])
- Removed duplication and consolidated the functions of the
itemdb->lookup_const()/mob->lookup_const()functions asmap->setting_lookup_const(). (part of [#3164]) - Moved the function
itemdb->lookup_const_mask()into the map interface asmap->setting_lookup_const_mask(). (part of [#3164]) - Renamed the
BA_FROSTJOKERskill and related constant to the official nameBA_FROSTJOKE. The old name is left behind as a deprecated constant, to ease migration of custom code. (#3170) - Split
constants.mdintoconstants_re.mdandconstants_pre-re.md, since there are large variations in the available constants and their values between modes. The generator plugin and related CI script have been updated accordingly. (#3171) - Refactored and simplified some code after the removal of the multi-zone leftovers. (part of [#3173])
- Cheatsheet for updating custom code:
MAX_MAP_SERVERShas been removed, and any code that used it in a loop needs to be refactored to remove the loop that is no longer necessary.chr->server[]has becomechr->map_server(and it's a single object rather than an array of one element).- packet
H->Z0x2b04 (chrif->recvmap()) has been removed without a replacement as it was never sent. - many functions that took a
map_id/server_idargument no longer need it (since it would be always zero). Code that used it likely needs to be refactored or removed. - packet
H->Z0x2b20 (chrif->removemap()) has been removed without a replacement as it was never sent. mapif->sendallwos()has been removed without a replacement as it never sent anything since there couldn't be more than one map server connected at any given time.mapif->sendall()is replaced bymapif->send()(but mind the different return value).mapif->send()no longer requires a server id argument since there can only be one (and its return value changed).- several pieces of code have been completely removed since they were not reachable through any code path: any custom code part of them was likely never called and can be safely removed.
map->map_dband any related functions have been removed, as it could never get populated.chrif->other_mapserver_countand any related functions have been removed, as it could never become nonzero.- packets
Z->H0x2b05 andH->Z0x2b06 have been removed as they could never be sent. chr->search_mapserver()andchr->search_default_maps_mapserver()have been completely overhauled and their purpose is now fulfilled bychr->mapserver_has_map()andchr->find_available_map_fallback(), with different return values and arguments.- the
map_fdargument has been removed from several non-mapif functions that should have no business with it. The map server's fd can be retrieved throughchr->map_server.fd, but in most cases it shouldn't be necessary and could be a code smell. - the
chrif->changemapserver()function has been removed with no replacement as it was never called. - the
serverfield ofstruct online_char_datahas been replaced with an enum and renamed tomapserver_connection. It no longer encodes the server ID (since it could only be zero) but only the connection state. The old-2special value maps toOCS_UNKNOWN,-1toOCS_NOT_CONNECTEDand>= 0toOCS_CONNECTED.
- Moved the
chrifpacket documentation topackets_chrif_len.h, where the packet lengths are defined. (part of [#3173])
Fixed
- Fixed/implemented Official behavior for the Golden Thief Bug Card, blocking SCs caused by magic-type skills, regardless of the SC type. (#3155)
- Exceptions apply: Magnificat, Gloria and Angelus are blocked, even if they aren't magic-type skills.
- Some skills that would be broken now have temporary workarounds to apply the right behavior if it doesn't match what their type dictates.
- The
NoMagicBlockedflag has been removed from skills that no longer require it. - Fixed the
AttackTypefor many skills to match the official value. (part of [#3155]) - Fixed the zeny payments through the Stylist UI to be properly logged and count toward achievements. (#3157)
- This includes a potentially very long running database migration for the logs database (adding the picklog type '5').
- Fixed
PF_SOULCHANGEto match the official behavior, preventing its use against characters in the Berserk state and against boss monsters and allowing it to disregardSC_FOGWALL. (#3160) - Fixed a case of the Doctor Quest taking items and not rewarding in return, as well as some
delitem()that aren't executed in the same run loop ascountitem(). (#3162) - Fixed some possible exploits in the Pickocked Quest, allowing only one instance of the NPC to be available at any time. (#3162)
- Fixed the Dual Monster Race logic to disregard the relative order of the winning monsters and simplified the script logic. (#3162)
- Fixed Kihop wrongly counting the bearer Taekwon for the bonus calculation. (#3161)
- Fixed the interaction of Lex Aetherna with Freeze and Stone Curse. (#3161)
- Fixed the SP cost behavior for Tarot Card of Fate when under the effect of Service for You. (#3161)
- Fixed the duration of Super Novice's Steel Body when dying at 99% experience. (#3161)
- Fixed the cast time and after cast delay of Napalm Beat. (#3161)
- Fixed
CH_CHAINCRUSHnot working afterMO_COMBOFINISH. (#3161) - Fixed several security issues (including a number of false positives) reported by CodeQL (overflows, misleading implicit type conversions, ambiguous regular expressions, etc) and refactored some related code to reduce dangerous variable reuses. (#3169)
- Fixed some cases of movement notifications sent to the client after a monster dies, causing visual glitches such as mobs not cleared and still standing or moving after their death. (#3163, issues [#2047], [#2109])
- Fixed an integer overflow in the image size for the Macro interface. (#3165)
- Fixed a failed assertion when a quest has 3 objectives. (#3166)
- Fixed various quest related packets sent to the client. (#3166)
- Fixed the labelling for quests that use monster size, race or element as conditions.
- Fixed swapped values for the mob size.
- Fixed the mob ID not being sent for special cases (with map names, races, sizes or elements) and requiring a new log in to see the correct quest objectives.
- Fixed the Zeny retrieval process from RoDEX, causing potential loss of Zeny. (#3168)
- Fixed output character encoding in the
setup_mariadb.ps1script. (#3172) - Fixed a buffer overflow in
mapif->rodex_getitemsack(). (part of [#3173])
Deprecated
- Deprecated the
BA_FROSTJOKERskill ID and constant, renamed to the official nameBA_FROSTJOKE. (part of [#3170])
Removed
- Removed the
itemdb->lookup_const()andmob->lookup_const()functions, replaced bymap->setting_lookup_const(). (part of [#3164]) - Removed the
itemdb->lookup_const_mask()function, replaced bymap->setting_lookup_const_mask(). (part of [#3164]) - Removed support for the deprecated
Viewfield in the item DB, replaced in 2016 byViewSpriteandSubTypewith [#1828]. (#3170) - Removed the deprecated constants
Job_AlchemandJob_Baby_Alchem, replaced in 2016 byJob_AlchemistandJob_Baby_Alchemistwith [#1088]. (#3170) - Removed the old
VAR_*setlook constants, deprecated since 2016 with [#908]. (#3170) - Removed the
useatcmd()script command, deprecated in 2017 with [#1841]. (#3170) - Removed code (mostly dead code) related to the long unsupported and long broken multi-zone functionality. (#3173)