Commit Graph

47 Commits

Author SHA1 Message Date
Lemon
7c153416bc Improved randomness (part 1) (#7882)
Faster and with no module bias

Removed rnd_init, rnd_uint32 and rnd_uniform
From now on we will only use rnd_value(min, max) for values in range [min, max] and rnd_chance(chance, base) for chances

Fixes #7881
Fixes #7883
Fixes #7884
Fixes #7885

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-12-20 00:12:15 +01:00
Vincent Stumpf
a2f4f2bf8e Do not call pet_set_intimate twice (#7702) 2023-04-15 15:02:41 +02:00
Vincent Stumpf
819b7cb361 Fix ASAN crashes and LSAN leaks (#7649) 2023-03-20 09:32:41 -07:00
Vincent Stumpf
1b1164f91d Change memcpy for safestrncpy for char * (#7629) 2023-03-06 09:53:23 -08:00
Vincent Stumpf
e235c9cab4 Change common and config includes to use <> (#7596) 2023-02-12 12:46:06 -08:00
Vincent Stumpf
6938722f02 Replace the bitshift optimizations for multiplication (#7590)
* These were originally bitshifts because it was 'faster', but now with modern compilers and hardware, the only thing it does now is confuse developers who have to read the code
2023-02-08 16:00:11 -08:00
Singe Horizontal
8eac71f57f Cleaned struct tokens for map_session_data and status_change (#7490)
Fixes #7492
2022-12-16 19:16:29 +01:00
Vincent Stumpf
1f4c068c39 Refactor status change entries (#7356)
* Make map_session_data a class, call constructor/destructor on alloc/free

* add getSCE

* add create, delete, clear SCE

* Use getSCE, make data access private

* add a cache for last-fetched status
2022-12-13 23:47:53 -08:00
Lemongrass3110
eb8587f5b5 Removed the strange ACK function concept (#7404)
Cleans up packet database a little more.
Turned some more packets into structs.

Co-authored-by: Vincent Stumpf <vincents.995@gmail.com>
2022-11-17 22:09:12 +01:00
Vincent Stumpf
7b2a682c47 Fix pet_endautobonus crash (#7342)
Fixes #7292
2022-10-11 15:04:15 +07:00
Aleos
4c42bcbb34 Fixes petautobonus issues (#7272)
* Fixes #7271.
* Fixes a missing check that looks to see if the bonus already exists before adding it again to the vector.
* Fixes the removal of pet autobonuses.
Thanks to @mazvi, @vstumpf, and @Lemongrass3110!
2022-09-19 16:35:42 -04:00
Aleos
f8cd4aa8c7 Implements petautobonus script commands (#7053)
* Fixes #7038.
* Implements script commands: petautobonus, petautobonus2, and petautobonus3.
* This allows pets to utilize the same autobonus features that players can use without having to check for the equipped item position.
Thanks to @EditorFc's suggestion and @Lemongrass3110!
2022-09-16 12:46:53 -04:00
Lemongrass3110
b1b371f4b8 Cleaned up status_change_end (#7211)
* Removed leftover old debug info that made it necessary to the hide the real function behind a define.
* Introduced a C++ default argument for timer id, as the timer id is only needed a single time, when the status expires naturally.
* Replaced all currently existing calls that had INVALID_TIMER as argument and made use of the new default argument.
2022-08-26 22:23:40 -04:00
Lemongrass3110
01261dbf3d Cleanup after RYML merge (#6785)
Speeded things up even more by making use of C++'s reference feature.
Fixed #6770 warning while at it.
Added back support for case insensitive booleans.
Fixed a very rare issue with cached databases.
Removed .children() calls
Added back type safety reports
Added ryml to login-server makefile

Thanks to @aleos89, @Atemo and @idk-whoami
2022-04-03 04:02:13 +02:00
Aleos
163f8c2c35 Fixes error reporting with SQL and ryml (#6778)
* Fixes #6768.
* Send 0 as the parse line in SQL mode for item scripts as the ryml parser isn't fully populated in SQL mode.
* Also cleans up some documentation references for EquipScript and UnEquipScript.
Thanks to @dralucon87 and @Lemongrass3110!
2022-04-02 12:44:30 -04:00
Jittapan Pluemsumran
d1b7061f5a YAML loading optimization (#5997)
* Use rapidyaml library to parse YAML databases instead of yaml-cpp.
* Drastically reduces the parse time for yaml databases.
* Removes yaml-cpp content from main servers, except for tool emitter.
Co-authored-by: Vincent Stumpf <vincents.995@gmail.com>
Co-authored-by: Atemo <capucrath@gmail.com>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-03-30 16:38:52 -04:00
Aleos
84248255b7 Implements MF_NOPETCAPTURE (#6618)
* Fixes #6556.
* Implements the nopetcapture mapflag which is used to stop pet-type monsters from being caught.
Thanks to @RagnaWay and @Lemongras3110!
2022-02-16 12:51:25 -05:00
Lemongrass3110
09dcb2c61f Fixed pet capture rate (#6439)
Added some missing checks for distance to the target monster and if the target monster is hiding.

Fixes #6395

Thanks to @Everade and @mrjnumber1

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-01-04 22:52:22 +01:00
Balfear
54431dd0ec Pet autofeed config fix (#6249)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-09-10 22:56:26 +02:00
Lemongrass3110
6b84115790 Speeded up item name lookup (#6161)
Partial takeover from #5997
Did some further cleanup and took it out of the pull request until secret has time to finish it.

All credits to @secretdataz

Co-authored-by: secretdataz <secretdataz@users.noreply.github.com>
2021-08-08 16:46:44 +02:00
Lemongrass3110
af97f7f9bd Added ID field to mob_db structure (#6069)
Fixes #6055

Thanks to @k1ngJ
2021-07-03 17:48:30 +02:00
Lemongrass3110
f378f24f17 Fixed wrong node name access for pet db 2021-04-16 01:22:15 +02:00
Aleos
7992e0891b Converts the mob database to YAML (#5435)
* Combines mob_race2 and mob_drop databases into one.
* General cleanups and optimizations.
* Includes CSV2YAML conversion tool.
Thanks to @vstumpf, @lukasrmattos, and @Lemongrass3110!
2021-02-16 17:09:06 -05:00
Aleos
5c5c6839a0 Fixes item production with high item IDs (#5315)
* Fixes #5312.
* Fixes general item production skills not consuming catalyst items with high IDs.
* Adjusts item searching functions to use t_itemid instead of uint32.
* Adjusts script command makeitem2 to use t_itemid isntead of uint32.
* Fixes output and lookups for atcommands idsearch, autolootitem, iteminfo, whodrops, makeegg, and itemlist.
* Fixes signed vs unsigned checks.
* Fixes MVP logging.
* Fixes item drop ratio storage.
* Fixes CSV2YAML conversion checks.
Thanks to @idk-whoami and @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2020-08-11 10:39:37 -04:00
Lemongrass3110
1d049204dc Follow up to c86a5a4
Thanks to @mplaten
2020-08-09 00:04:26 +02:00
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
Lemongrass3110
c86a5a4536 Fixed memory leak from pet imports (#5283)
Fixes #5279

Thanks to @mplaten
2020-08-07 21:38:56 +02:00
Lemongrass3110
02c5b8c8d8 Added and fixed some pet features (#5040)
Fixes #5019

Thanks to @alisonrag
2020-07-03 13:52:15 +02:00
Sader Fawall
3058d10a4e Fix several issues with pets (#4422)
* Fixes #4422.
* Resolves an issue hatching eggs when trading and eggs not being deleted after the pet is lost.
Thanks to @sader1992!
2019-12-06 21:56:34 +01:00
Aleos
aa63c855c0 Corrected pet bonuses not applying (#4292)
* Fixes #4283.
* Corrected pet bonuses not applying on intimacy changes.
* Removed pet_equip_min_friendly battle config as bonuses are determined on intimacy in the bonus script.
Thanks to @teededung!
2019-08-14 08:56:48 -04:00
Kakaroto
87b858199b Pet Fix Client after 20180704 (#4202)
A minor fix that corrects a problem when hatching eggs from pets to clients after 20180704.

Fixes #4190 

Thanks @4144 and @Asheraf
2019-07-07 20:13:24 +02:00
Aleos
06020502b8 Adjusted pet walk speed (#4083)
* Added battle config pet_walk_speed.
* Resolves some pets walking too slow.
2019-04-11 18:49:07 -04: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
Aleos
c5a5c54518 Converted remaining C comments (#3927)
* Converted remaining documentation that references .c or .h files.
2019-02-09 15:08:45 -05: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
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
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
Lemongrass3110
c4d7dc76d3 Hid timer function parameters in a macro (#3311) 2018-07-15 23:17:15 +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
Lemongrass3110
801d3ed942 Moved common, config and mapcache to C++ (#3200)
Dropped BETA_THREAD_TEST and everything around it
Dropped mt19937
Replaced msinttypes with cinttypes
Removed IRC link and updated README name
2018-06-14 21:51:58 +02:00
Lemongrass3110
0a84542220 Added a template function for std::map search (#3107)
Thanks to @secretdataz for his help.
2018-05-16 08:26:48 +02:00
Jittapan Pluemsumran
1e766a7b4a Converted pet_data::petDB into a getter function (#2901)
* Converted pet_data::petDB into a getter function
Fixed #2900
Thanks to @Lemongrass3110
2018-02-23 17:14:46 +07:00
Lemongrass3110
fb966a12e0 Turned pet db into a dynamic map (#2727)
Thanks to @Jeybla, @lighta and @aleos89
2018-01-01 22:57:47 +01:00
Sader Fawall
d19ba918ae Update pet script command (#2705)
* Fixes #2703.
* Added alternative for script command bpet: birthpet.
* Added alternative for script command pet: catchpet.
* Updated documentation for script command pet.
* Added PET_CATCH_UNIVERSAL_ITEM for script command pet which will attempt to catch the targeted monster as long as it is in the pet database and the targeted monster requires the lure item used.
Thanks to @sader1992!
2017-12-27 21:27:04 -05:00
Aleos
9315781a48 Updated Pet catching values (#2719)
* Added pet catching constants.
* Converted catch_target_class from short to uint16 for future expansion.
Thanks to @Lemongrass3110!
2017-12-21 12:54:19 -05:00
Atemo
ea88ea5054 Emoticons constant name (#2527)
This PR change the emoticons constant name to match emoticonlist from client side.
Note: the previous emoticons names are now deprecated.

Additionnally emotion and unitemote scripts commands are being merged together to the new format
-> emotion <emotion number>{,<target>};
Where target use the target Game ID (GID) of the unit (npc, pet, character etc..).

* unitemote is now deprecated.
* Additionnally fixed incorrect variable in quests_brasilis.txt

Thanks to @aleos89 and @Lemongrass3110 !
2017-11-10 18:35:21 +01:00
Aleos
c4a364be2c Initial work for map server to C++ (#2565)
* Initial progression of moving the map-server to C++ format.
* Converted all core files to .cpp and header files to .hpp.
* Refactored the refine database parser to utilize native YAML C++.
Thanks to @Jeybla and @lighta for their help!
2017-11-02 17:39:03 -04:00