May Digest 2019
The following digest covers the month of June 1st - June 30th 2019
Team Changes
@Asheraf is now Core Developer.
Added
Added Stat Reduction Potions to the Renewal item DB. (#2483)
Added the constant `MAX_NPC_PER_MAP` to the script engine. (part of #2474)
Added the `cap_value()` script command, to cap a value between a minimum and maximum. (#2472)
Added the `mesclear()` script command, to clean an NPC message dialog without user interaction. (#2471)
Added a script for simplified installation on Windows development machines. (#2222)
Added/updated packets, encryption keys and message tables for clients up to 2019-05-30. (#2468, #2490)
Added support for multiple hotkeys sets (two 'tabs' on the RE clients). The constant `MAX_HOTKEYS_DB` represents the maximum amount of hotkeys saved to the database. This requires a database migration. (part of #2468)
Added the `delitemidx()` script command, to delete an item by its inventory index. (#2394)
Added the `getguildonline()` script command, to return the amount of online guild members. (#2290)
Added the `nostorage` and `nogstorage` mapflags, disallowing storage usage on the affected maps. The `bypass_nostorage` permission is also provided, to bypass those mapflags. (#2221)
Added/updated packets, encryption keys and message tables for clients up to 2019-06-05. (#2491)
Added support for the new shortcuts packets in the Zero clients. (part of #2491)
Added support for the Summoner class in `stylist.txt`. (part of #2357, issue #2356)
Implemented the new `setfavoriteitemidx()` and `autofavoriteitem()` script commands. (#2427)
Implemented the new `@reloadnpc` atcommand, to reload a single script file. (#2476)
Implemented the new `identify()` and `identifyidx()` script commands and `@identifyall` atcommand. (#2487)
Changed
Moved the questinfo data from map to npc data, allowing the use of multiple `questinfo()` blocks. (#2433, issue #2431)
Removed code duplication from the map data cleanup functions. (part of #2433)
Allow to read negative values from `input()`. The minimum value is still set to 0 in the default configuration, but it can be overridden globally by editing `input_min_value` or locally by specifying the `min` and `max` arguments to `input()`. (#2375)
Extended the `getmapinfo()` command to return the total number of NPCs in a map (`MAPINFO_NPC_COUNT`). (#2474)
Updated the pre-renewal Byorgue summon slave delay to match the official value, increased before renewal to prevent farming exploits. (#2456)
Changed the `"all"` special value used by `killmonster()` to be lowercase and case sensitive, for consistency with other script commands. (#2380)
Updated and simplified the Windows installation instructions. (part of #2222)
Updated some NPC/name translations to match the official ones or the official intent. Cougar -> Kuuga Gai, Gaebolg -> Geoborg, Family -> Clan, Magic Gear -> Mado Gear (#2457)
Updated the Mado Gear rental NPC to sell Mado Gear Box and Cooling Device. (part of #2457)
Changed the `expandinventoryack()`, `expandinventoryresult()`, `expandinventory()` and `getinventorysize()` script commands to be lowercase, for consistency. (#2374)
Suppressed unnecessary ShowWarning messages related to the `nosave`, `adjust_unit_duration` and `adjust_skill_damage` mapflags when using `@reloadscript`. (#2410, issue #2347)
Updated the Rune Knight, Guillotine Cross and Ranger shops with missing items. (#2343)
Fixed
Fixed the `failedremovecards()` command, to only remove the carts when `type` is set to 1, as described in its documentation. (#2477, issue #2469)
Fixed a crash when using `npcspeed()`, `npcwalkto()`, `npcstop()`, `unitwalk()`, `unitwarp()`, `unitstop()` on a floating NPC without a sprite. (#2430)
Fixed a stats calculation regression. (#2482)
Fixed a version check for the `ZC_PING` packet. (part of #2468)
Fixed errors caused by missing Option DB and Option Drop Groups DB data when the map server loads the mob database in minimal mode. (#2486, related to issue #2484)
Fixed monster spawns disregarding the custom names specified. (#2496, #2491, issue #2495)
Fixed the style range in `stylist.txt`, now starting from 1 instead of 0. (part of #2357, issue #2356)
Deprecated
Deprecated use of `"All"` with `killmonster()`. Use `"all"` instead. (part of #2380)
Deprecated the mixed case version of the `expandInventoryAck()`, `expandInventoryResult()`, `expandInventory()` and `getInventorySize()` script commands. Use the lowercase variants instead. (part of #2374)
Special thanks to
@Haru @4144 @KirieZ @bWolfie @Emistry @AnnieRuru