165 Commits

Author SHA1 Message Date
Vincent Stumpf
3776bfbaa3
Support itemids up to ~2 billion (#5141)
Co-authored-by: aleos89 <aleos89@users.noreply.github.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-08-08 12:06:07 +02:00
Aleos
fcdcce2cfa
Fixes NPC_RUN behavior (#5236)
* Fixes #3622 and fixes #5220.
* Monsters now properly escape from the attacker.
* NPC_RUN should determine distance based on skill level > 1.
* Resolves Sphere Mine when summoned by an Alchemist not escaping.
Thanks to @Balferian, @Indigo000, and @Daegaladh!
2020-07-28 14:57:09 -04:00
Atemo
5ba29be2a3
Added support for race/size/element/min level/max level quest objectives (#5191)
* Added support for race/size/element/min level/max level quest objectives
* Enabled Butler for the Richards hunting quests (ep16.1) 

Co-authored-by: Aleos <aleos89@users.noreply.github.com>

Thanks to @attackjom, @Balferian !
Took some parts from b67c688e79 (diff-f3653b71c45029581a98314726e4d8f5) thanks to @exneval !
2020-07-20 18:59:50 +02:00
Daegaladh
c14f05b652 Fixed supportive monsters calling monsters with no assist mode 2020-06-25 02:55:22 +02:00
Daegaladh
d35e2899d9 Fixed passive slave monsters becoming aggressive
(Passive slave monsters officially get stuck when are too far from their master and lost their target)
*Follow up to 04ba3e3d96887ca766fee7ae0e62e5252313ce22
2020-06-24 02:52:22 +02:00
Aleos
04ba3e3d96
Adds a config for slave teleporting to master (#5095)
* Fixes #5003.
* Adds a battle config to toggle the ability for slaves to teleport back to their master when they are too far away.
* Officially, players can drag slaves away from the master without them teleporting back.
* Determined that slaves don't become completely stuck but rather immobile until a target comes in range again.
Thanks to @poporing and @Daegaladh!
2020-06-16 20:58:12 -04:00
Aleos
5647c875d6
Adds support for sharing battle-type Achievements (#5021)
* Fixes #5018.
* Adds support for sharing battle-type Achievements when killing monsters.
* The behavior mimics Quest objectives.
* Adds a battle_config to easily toggle (off by default until confirmed on kRO).
Thanks to @MccloudBR's suggestion!
2020-06-12 13:02:50 -04:00
Lemongrass3110
47ebf332ab Follow up to b10caa0 2020-06-02 23:58:57 +02:00
Lemongrass3110
b10caa039b Fixed slave recalculation on reloadmobdb
Slaves sometimes ended up with weird status calculations or insane speed, because their status got recalculated before their master and this way their speed could not be copied from the master.

Thanks to @Daegaladh
2020-06-02 19:37:33 +02:00
Aleos
4f68d0c144
Fixes Mercenary kill counter (#5010)
* Fixes #4329.
* The master or the Mercenary are able to increase the kill count.
Thanks to @Indigo000!
2020-05-28 13:22:31 -04:00
Aleos
0e42b738c5
Fixes looter mobs getting stuck (#5000)
* Follow up to b6b6b13.
* Fixes #4941.
* Fixes cases of monsters getting stuck when they lose sight of their target item that is looted by another monster.
Thanks to @iraciz and @SeravySensei!
2020-05-26 10:30:59 -04:00
Daegaladh
5154e07899 Follow up to 73140bd078036ef173568918102e42f824ee148c 2020-05-12 23:09:22 +02:00
Daegaladh
73140bd078
Fixed monster messages not loading (#4908) 2020-05-09 15:53:17 +02:00
Daegaladh
ca56c060cf
Added independent idle time and settings for homunculus share (#4761)
* Follow up to 921b3e2c3e9eae36cbf2ca35bcede6e0d73ba074
2020-04-27 20:21:22 +02:00
Aleos
652d77eb02
Job Improvement Project - Genetic (#3284)
* Fixes #2571.
* Updates Homunculus skills from kRO maintenance: http://ro.gnjoy.com/news/update/View.asp?seq=218&curpage=1
* Updates Genetic skills from kRO maintenance: http://ro.gnjoy.com/news/update/View.asp?seq=246&curpage=1
Thanks to @Tokeiburu, @Badarosk0, @Balferian, and @Haydrich!
2020-03-25 13:26:26 -04:00
Aleos
ea8da71cdd
Rebalancing of 1st/2nd/Transcendent class skills (#4072)
* Fixes #3715.
* kRO changelog: http://ro.gnjoy.com/news/notice/View.asp?seq=7040
* Refactored size_fix database to YAML.
Thanks to @flamefury for his translations!
Thanks to @Angelic234, @mrjnumber1, @Badarosk0, @OptimusM, @attackjom, @Playtester, Melvo, @cydh, @cahya1992, Sigma, @whupdo, @teededung, @ecdarreola, @hotspicy945, @RagnaWay, @sader1992 for bug testing!
2020-03-06 10:57:19 -05:00
Aleos
b13bc7402c
Resolves an issue with mob avail options (#4651)
* Fixes #4647.
* Resolves an issue with mob avail options not properly checking the state of the option label.
Thanks to @Litro!
2020-02-17 20:30:05 -05:00
Aleos
dca3797d44
Converted the skill database to YAML (#4531)
* 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>
2020-01-31 14:14:08 -05:00
Daegaladh
ed51647311
Fixed hom_idle_no_share exp check (#4557)
* Follow up to 921b3e2c3e9eae36cbf2ca35bcede6e0d73ba074
2020-01-28 21:29:30 +01:00
Daegaladh
921b3e2c3e
Added conf option for homunculus idle no share (#4548)
* Added conf option to make characters stop receiving exp/drop from homunculi when they are idle
2020-01-22 18:55:59 +01:00
Lemongrass3110
e72c7360cf
Added int64 support to the script engine (#4522)
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.
2020-01-13 14:44:48 +01:00
Daegaladh
78a02330b2
Follow up to e27aa8b2d82620aa461291b293e00afb7c79e0cb (#4509)
* Additional configs for boss idle AI
2020-01-11 15:14:33 +01:00
Daegaladh
e27aa8b2d8
Additional configs for mobs idle AI (#4503)
* Added conf options to enable/disable monsters using idle skills and move when there's no players nearby.

Thanks to @aleos89
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-01-03 00:20:50 +01:00
Aleos
6f52f6794f
Corrected mob availability database sprite lookup (#4502)
* Fixes #4495.
* Adjusted the monster sprite lookup to ignore any restrictions based on monster data.
Thanks to @sader1992!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-01-01 22:30:12 -05:00
Aleos
b0119631a4
Allow NPC view data modifications (#4385)
* Fixes #4289.
* Updated script commands setunitdata and getunitdata to support the modification of NPC view data.
* Converted mob_avail database to YAML.
Thanks to @Lemongrass3110, @4144, @exneval, @Balferian, @cahya1992 and @teededung!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2019-12-22 10:27:43 -05:00
Daegaladh
28c70cde3d
Fixed SC_KEEPING and SC_BARRIER exploit after classchange (#4486)
* Fixed monsters affected by SC_KEEPING and SC_BARRIER not moving or attacking after classchange
* Thanks to @aleos89
2019-12-17 23:40:46 +01:00
Jittapan Pluemsumran
ac558d7c1e
Initial implementation of pet evolution system + Pet DB conversion to YAML (#3544)
* 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
2019-03-26 22:51:57 +07:00
Jittapan Pluemsumran
f5e8af0d9c Fixed possible null pointer dereference in Taekwon Mission skill logic. Fixes #3996
Thanks to @cydh
2019-03-05 15:00:04 +07:00
Aleos
78eed02273 Updated the YAML parsing method (#3694)
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!
2019-02-28 22:19:39 +01:00
Lemongrass3110
a5fc39e0e3
Fixed a few more leftovers from 64bit tick (#3885)
Fixes #3864

Thanks to @darhylism, @nubspixel, @Daegaladh and @aleos89!
2019-01-22 23:14:50 +00:00
Aleos
7282dd8735
Fixed Reflect Damage not reflecting damage (#3848)
* Fixes #3801.
* Fixed a timer type issue causing Reflect Damage to no properly distribute damage.
* Corrected some final tick leftovers that may cause issues with other skills.
Thanks to @Angelic234 and @rAthenaCN!
2019-01-11 10:15:12 -05:00
Lemongrass3110
8e58f2ce24
Fixed reloadmobdb status calculation (#3784)
Fixes #3783

Thanks to @Everade
2018-12-23 20:24:29 +01:00
Lemongrass3110
01f61cfa4f
Added support for 64bit ticks (#3768)
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.
2018-12-21 00:02:19 +01:00
Lemongrass3110
bde580fdbd
Add drop highlighting effect feature (#3710)
Fixes #3610

Thanks to @Balferian, @admkakaroto and credits to @Asheraf
2018-11-29 22:34:57 +01:00
Aleos
c71ef92fb0
Refactored item bonuses to utilize C++ features (#3235)
* Fixes #996 and fixes #3152.
* Refactored MAX_PC_BONUS item bonuses from static arrays to vectors.
* Increased MAX_PC_BONUS to 50.
* Frees up memory from players that may not ever utilize all their static MAX_PC_BONUS item bonuses.
* Expanded bonus ResEff to not be restricted to SC_COMMON* statuses.
* Removed old ERS usages.
* Removed code redundancy and general cleanups.
Thanks to @Angelic234, @Atemo, @Lemongrass3110, and @Everade!
2018-11-28 21:50:43 -05:00
Aleos
7045d585e4
Added constants for Castle Data manipulation (#3531)
* Fixes #3530.
* Added constants for script commands getcastledata and setcastledata.
* Adjusted the guardian constants to adjust based on MAX_GUARDIANS define value.
* Updated scripts to reflect changes.
Thanks to @keitenai, @Atemo, and @Lemongrass3110!
2018-11-08 16:27:03 -05:00
Lemongrass3110
c0793a8072
Adding LGTM to CI tools (#3636)
Thanks to @aleos89 for his help.
2018-10-29 21:25:36 +01:00
Cydh Ramdh
fe197bfa12
Renewal Monster Updates (#3541)
* Renewal Monster's ATK & MATK Calculation Updates
* Renewal Monster database updates
  * ATK1 is *base* ATK, the range 80%~120% is calculated in src
  * ATK2 is *base* MATK, the range 70%~130% is calculated in src
* Adjusted ATK range min~max in mobinfo atcommand
* Nothing was changed in pre-renewal system!
* Thanks to @aleos89, @slyx88 and Divine-Pride.net
2018-10-13 19:00:14 +07:00
Aleos
926e37cb65
Corrected some GCC 7.1+ compile warnings (#3522)
* Fixes #2787 and fixes #3513.
* Resolved some format-truncation warnings.
* The remaining will be fixed at a later time.
Thanks to @RadianFord and @Lemongrass3110!
2018-09-28 13:57:27 -04:00
Aleos
7040057a9f
Corrected Taekwon Mission mob generator (#3509)
* Fixes #3499.
* Corrected the way target monsters are generated for Taekwon Mission.
* Requires: The mob ID is in the range [MOBID_PORING, MOBID_GREEN_IGUANA], the mob must have below 30,000 HP, the mob must give Base EXP, the mob must be CLASS_NORMAL.
* Added a new mob group: MOBG_Taekwon_Mission
* Removed hard coded checks.
* Created constants for random monster group flags.
Thanks to @mrjnumber1, @Lemongrass3110, and @cydh!
2018-09-25 13:32:11 -04:00
Aleos
386ee35507
Updated mob_drop parsing (#3452)
* Fixes #3172.
* Mob Drop Database now updates an item's values if it is already dropped by a monster.
Thanks to @teededung!
2018-08-31 19:01:40 -04:00
Atemo
c856b07c45
Suggestion of 'killedgid', variable set when a monster is killed containing the monster game ID (#3418) 2018-08-23 15:49:32 +02:00
Aleos
48ae1a1e05
Cleaned up map storage type (#3384)
* Fixes #3369, fixes #3370, and fixes #3382.
* Converted maps storage container back to static array.
* Converted mapflag storage containers to unordered_map.
* Removed a lot of redundancy and recursive lookups.
* Fixed a couple short-circuit checks to help with performance.
* Fixed multiple instance creation/destruction issues.
* Fixed PK Mode attempting to set PvP on flags that are already active.
* Getting MF_RESTRICTED will return the map's zone value instead of the state.
* Converted mapflag macros to inline functions.
Thanks to @teededung, @lelouch22, @mazvi, @Lemongrass3110, and @cydh!
2018-08-10 13:52:07 -04:00
Lemongrass3110
a05ed6e814
Fixed walk_choices's type (#3353)
Fixes #3310

Replaced some still hardcoded values with their define constants.
Added a function to check if a walk will be diagonal and fixed invalid calculation for it.

Thanks to @DavidPS92
2018-07-30 00:24:31 +02:00
Aleos
584fcac43a Cleaned up map data storage (#3347)
Follow up to a942853.
Fixes #3336.
Moved map_data storage to std::map container.
Created map_getmapdata to obtain pointer to map_data.
Got rid of MAX_MAP_PER_SERVER define.
Resolved deletion of instances causing other instances to lose their intended map ID.
Refactored warp suggestions

Thanks to @teededung, @anacondaqq, @cydh and @Lemongrass3110!
2018-07-26 01:06:59 +02:00
Aleos
a942853d55
Cleaned up the mapflag system (#2943)
* Created setter and getter functions.
* Adjusted all calls to use these functions.
* Converted mapflags to C++ map container.
* Converted drop_list to vector.
* Converted skill_damage ERS into vector and increased limit from UINT8 to UINT16.
* Cleaned up several functions to be more dynamic to reduce redundancy that was all over the place.
* Renamed nosumstarmiracle to nosunmoonstarmiracle.
* Adjusted skill_damage mapflag to use proper defined constants.
* Refactored map index into a vector.
Thanks to @Lemongrass3110 for a lot of help and @secretdataz!
2018-07-18 20:00:33 -04:00
Lemongrass3110
c4d7dc76d3
Hid timer function parameters in a macro (#3311) 2018-07-15 23:17:15 +02:00
Lemongrass3110
91169d7ebc
Fixed a few compiler warnings on clang (#3263)
Mostly pointer-bool-conversion and autological-pointer-compare
2018-07-05 22:53:20 +02:00
Lemongrass3110
880e227ea2
Cleaned up some hardcoded variables (#3237) 2018-06-24 22:16:28 +02:00
Aleos
11b42569fc
Synchronized source file headers (#3212)
* Alphabetically sorted includes.
* Updated copyright and license text to match across all files.
* Removed pragma once define in header files in lieu of ifdef guards.
2018-06-20 18:08:30 -04:00