* Combines skill_cast_db, skill_castnodex_db, skill_copyable_db, skill_nonearnpc_db, skill_require_db, and skill_unit_db into skill_db.
* Introduces a cached YAML class for quicker lookups.
* General cleanups and optimizations.
* Includes CSV2YAML conversion tool.
Thanks to @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
* Fixes#4350.
* Resolved Expanded Baby classes parameter cap defaulting to the upper class.
* Fixes baby parameters for Summoners as well.
* Removed redundant baby checks due to correct order now.
Thanks to @bgamez23!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
* Follow up to 2732176.
* Fixes#4150.
* Removed an extra status calculation for players resulting in some status data being nullified.
* Adjusted status calculation for autobonus and unequipping items.
* Cleaned up delayed damage logic.
Thanks to @cydh, @Hatfun, and @NeutralDev!
Added support for signed 64 bit integer value computation into the script engine.
This is required because newer official features require support for bigger numbers inside the scripts.
This also cleans up a lot of messy code and fixes a few issues like script stack corruptions.
Thanks to @aleos89 and everyone who supported me with this.
* Expanded Job_Baby_Rune -> Job_Baby_Rune_Knight, Job_Baby_Bishop -> Job_Baby_Arch_Bishop, Job_Baby_Cross -> Job_Baby_Guillotine_Cross, Job_Baby_Guard -> Job_Baby_Royal_Guard, and Job_Baby_Chaser -> Job_Baby_Shadow_Chaser.
* Expanded related MAPID/EAJ constants as well.
* Added deprecation notice for old constants.
* Updated database and NPC scripts to use new constants.
* `bonus bVariableCast,t;` now works in pre-renewal to increase casting time
* `bonus2 bSkillVariableCast,sk,t;` now works in pre-renewal to increase casting time by skill name
* Item bonus documentation update
* Added the official values for the AG_GOAL_ACHIEVE.
* Refactored the leveling logic for Achievements to account for the new values.
* Moved achievement EXP to a database file.
* Added AchievementLevel player variable to allow for easy tracking in the achievement condition checks.
* Cleaned up player GUI EXP progression.
* Added a check to not save achievements that made no changes.
* Added first login achievement.
Thanks to @Lemongrass3110!
* The <quest ID> is now removed, all the conditions are handled by a <condition> argument. The <condition> is using the achievement_check_condition (like in achievement_db.yml) so any condition (in theory) can be used to display the icon.
* A new script command has been added to refresh the bubble for the given player anytime.
Thanks to @aleos89 and @secretdataz for the review!
* Added item with GUID flag as `CHKADDITEM_NEW` in pc_checkadditem
* Adjust inventory blank check for guid item to `+n`
* Moved slot check as item_data function
* Removed quantity force-set-to-1 check for buying equip from cashshop, it will gives the item to player just like item with GUID flag
* Fixed CZ_STANDING_RESURRECTION check
* Player can force to resurrect as long as they have valid Token of Siegfried even in auto respawn maps
* Added command `@resurrect` to resurrect using first matched Token of Siegfried item in inventory clients that don't show Resurrect button
* Set `respawn_tid` to int
* The items implementation is based on JRO description instead of IRO description
* Yinyang combo items will be implemented later when more infos will be available
* Fixes#4146.
* Reverted some of 7f772c3 as this falls into a larger refactor scope.
* Resolved an issue where items could not be picked up from the cart when the overweight message was sent to the player.
* Added missing e_additem_result constants.
Thanks to @secretdataz, @Normynator, and @cydh!
* Fixes#4069.
* Added caps to item bonus rates so that they don't exceed the -10000~10000 range.
* Added warning messages when initial rate exceeds range.
* Added a missing vector size check for HP/SP Vanish bonus.
Thanks to @Litro and @Lemongrass3110!
* Added setpcblock and getpcblock script commands.
'setpcblock' command prevents/allows the player from doing the given type of action.
'getpcblock' command return the bit-mask value of the currently enabled block flags.
The available type are:
PCBLOCK_MOVE
PCBLOCK_ATTACK
PCBLOCK_SKILL
PCBLOCK_USEITEM
PCBLOCK_CHAT
PCBLOCK_IMMUNE
PCBLOCK_SITSTAND
PCBLOCK_COMMANDS
PCBLOCK_NPCCLICK
PCBLOCK_EMOTION
PCBLOCK_ALL
Thanks to @sigtus, @secretdataz, @Lemongrass3110 and @aleos89 for the help and reviews !
Credit to https://github.com/HerculesWS/Hercules/pull/842 for the idea.
* Move HP/SP Vanish bonuses to vector
* Corrected the BF flags usage
* Immaterial Swords, Mental Destroyer, and Dark Priest trigger SPVanish by any attack types
Co-Authored-By: cydh <cydh@users.noreply.github.com>
* Implemented official pet evolution system
* Added evolved pets to pet database
* Corrected various pet system mechanics
* Migrated pet database to YAML format and the converter from CSV format
Thanks to @Lemongrass3110 @aleos89 and @Atemo for their suggestions and additional fixes
* Added getpcblock and setpcblock script commands.
* Added the docs
* Added the message 'This action is currently blocked.' when the player attempts to perform the following blocked actions
* PCBLOCK_USEITEM
* PCBLOCK_SITSTAND
* PCBLOCK_NPCCLICK
* The actions blocked are saved in state.block_action
* Click to the npc returns the WORK_IN_PROGRESS message when PCBLOCK_NPCCLICK is enabled
* Blocked action and reload script.
The player will return to his/her original state after reload script.
Thanks to @aleos89, @Lemongrass3110, @secretdataz
* Fixes#4016.
* Cleaned up the way Vellum damage and Vanish damage are calculated.
* Implemented bonus3 bSPVanishRate/bHPVanishRate.
* Updated Mental Destroyer item bonus.
* Cleaned up and added documentation.
Thanks to @Balferian!
Synchronized the process of loading and parsing YAML databases.
Provides more robust parse warnings/errors.
Added Header checks to validate database versions.
Adjusted root keys to a standard name of Body.
Adjusted inter-server storages, achievements, and attendance to follow the new format.
Fixes#3483
Thanks to @Lemongrass3110!
* Added the use of DBPATH/DBIMPORT definition for guild EXP, job information, level penalties, and map cache to remove hardcoded values.
Thanks to @marky291!
* Fixes#3908.
* Accessories that have cards which require specific left/right locations must take priority.
* Sped up position checking.
Thanks to @Badarosk0 and @Lemongrass3110!
* Cleaned up the way script commands parse arguments.
* script_isstring and script_isint will now properly check variable references.
* This allows script command arguments to contain variables without having to make source side adjustments.
* Reverted several script commands that reference the data directly.
Thanks to @Lemongrass3110!
* Fixes#131 and fixes#2699.
* Added item bonus bNoWalkDelay to replace infinite SC_ENDURE bonus in items.
* Added a warning if INFINITE_TICK is detected in the item combo bonus.
* Included some minor cleanups and additions.
Thanks to @exneval, @c0nflicts, and @esu1214!
* Fixes#3644.
* Corrected the loop that counts card/enchant combos at login being limited to the number of slots on the main item instead of MAX_SLOTS.
Thanks to @Badarosk0!
Fixes#3017
Thanks to Hercules for the idea and their implementation of it.
This deprecates Windows XP support. If you want to use it to run your server on it, you have to forcefully enable it now.
Since 64bit ticks do not exist on XP, you might encounter some issues that are already fixed on other OS.
* Fixes#3774.
* Resolved a few statuses getting removed when using Mado Gear that should be enabled.
* Added the ability to remove these statuses if the skills are disabled.
Thanks to @laziem and @Lemongrass3110!
Fixes#3739
Thanks to @whupdo for finding the broken removal.
Fixes#3766
Since vector elements will be pushed around in the container when an element is removed,
the original pointer might be invalid at the time the end of the timer has been reached.
A big thank you to @teededung for being persistent and helping me to reproduce the issue.
Introducing a new constant INFINITE_TICK
Changed current usages in items, npcs and source to use the new and correct constant.
Replaced some invalid usages of INVALID_TIMER and replaced them with the new constant.
* Resolved a rare case if a player logs in and the server hasn't fully initialized all of the player's items that the auto-save timer fires off and saves the player with no items.
Thanks to @Tokeiburu!